ThingWorx Flow > ThingWorx Flow SDK > 測試連接器
測試連接器
測試指令 
test 指令可用來測試連接器加工品。加工品有一些共用選項,還有一些特定選項。測試指令會將加工品類型作為子指令。test 指令具有下列指令:
指令
描述
flow test action <name>
測試名為 <name> 的動作。
flow test connection <name>
測試名為 <name> 的連線。
flow test lookup <name> <method>
測試查詢 <name> 中名為 <method> 的查詢函數。
flow test oauth <name>
測試名為 <name> 的 oauth。
flow test trigger <name> <method>
測試名為 <name> 的觸發器。
test 指令具有下列選項:
選項
描述
資料類型
--version
顯示版本編號。
[布林值]
--help
顯示說明。
[布林值]
--timeout
操作的逾時。--timeout 選項可指定以毫秒微單位的逾時 (預設為 30000 ms)。此選項可確保程式碼在指定時間內完成,且它會捕捉錯誤,例如回撥的遺失引動。
[預設:30000]
--logLevel,-1
設定記錄層級。
[預設:"info"]
ThingWorx Flow CLI 可讓您在伺服器上部署連接器之前測試個別加工品。這可協助您在部署連接器之前檢查加工品是否運作正常。
測試案例是使用 mocha-chai 架構編寫的。Mocha 用來定義測試套件, chai 作為宣告程式庫使用。所有測試案例都在 testData 資料夾下的特定加工品測試資料夾下定義。
test 指令可讓您在 ThingWorx Flow CLI 中測試加工品。
欲測試加工品,請從令提示執行下列指令:
1. cd <user project root directory>
2. flow test <artifactType> <name>
用來測試 OAuth 與觸發器的組態 
flow test oauthflow test trigger 指令可在內部啟動 web 伺服器。Web 伺服器只接受 http 請求。若要使其可以執行請求配置,必須使用憑證。如果憑證遺失,會發生下列錯誤:
[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\<user-home-dir\.flow\key.pem>
欲建立自我簽署的憑證,請執行下列操作:
1. 下載並安裝 openssl
2. 假設 openssl 在路徑中,執行 openssl req -nodes -new -x509 -keyout key.pem -out cert.pem
3. 將這些檔案複製到使用者主目錄下的 .flow 目錄中。
欲配置主機名稱與埠,請在使用者主目錄下的 .flow 目錄中建立名為 flow.json 的檔案。範例檔案如下:
{
"passphrase": "xyz",
"hostname" : "flow.local.rnd.ptc.com",
"port" : 443
}
所有內容都為選用。
Passphrase - 與需要複雜密碼的私密金鑰搭配使用。
Hostname - 用來針對 OAuth 建構 redirect_uri 及建立觸發器 URL。許多服務都無法允許 localhost 在 redirect_uri 中作為有效的主機名稱。某些應用程式明確需要非 localhost URL 作為 webhook 註冊 URL。您也可以嘗試使您開發系統的 URL 與用於測試目的的生產系統相符。例如,如果向 google 註冊的 redirect_urihttps://flow.local.rnd.ptc.com/Thingworx/Oauths/oauth/return, 則 flow.json 中的主機名稱應為 flow.local.rnd.ptc.com。此外,也應在 <%WINDIR%>\system32\drivers\etc\hosts 中新增主機。
* 
欲編輯檔案,請以管理員身份執行編輯器。
測試 OAuth 組態 
OAuth 組態測試透過瀏覽器完成,因為每個 OAuth 提供者都有一個不同表單用來接受使用者認證。CLI 會在內部以 express web 伺服器執行,來處理在成功或失敗驗證時由 IdP 傳送的回應。
欲測試 oauth 組態,請執行下列操作:
1. 從專案目錄中,執行下列指令:
flow test oauth <oauth name>
成功登入後,OAuth 驗證器瀏覽器視窗會開啟。如需詳細資訊,請參閱教學專區中的範例。
2. 選取要測試的組態,然後按一下「驗證 OAuth 組態」或按一下「結束」。
測試連線 
test connection 指令會呼叫 validate 方法,然後會呼叫 connect 方法、根據輸入結構描述測試輸入及根據輸出結構描述測試輸出。
欲測試連線,請執行下列操作:
1. 從專案目錄中,執行下列指令:
npm install
2. 在封裝中建立測試資料檔案,並在其資料中填入您的服務提供者資訊。
檔案包含 <projectDir>\test\testData 中測試 connectionTestData 的範例資料,如下列程式碼所示。
module.exports = {
sampleInput : {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
},
sampleOutput : {
handle: {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
} }
}
3. 使用下列選項執行測試指令:
選項
描述
資料類型
--version
顯示版本編號。
[布林值]
--help
顯示說明。
[布林值]
--timeout
操作的逾時。--timeout 選項可指定以毫秒微單位的逾時 (預設為 30000 ms)。此選項可確保程式碼在指定時間內完成,且它會捕捉錯誤,例如回撥的遺失引動。
[預設:30000]
--logLevel,-1
設定記錄層級。
[預設:"info"]
--artifactVersion,-v
要測試之加工品的版本。
NA
--projectDir,-d
專案的父目錄。
NA
--input,-i
輸入變數的名稱。
NA
--output,-o
預期輸出變數的名稱。
NA
--testDataFile,-f
testData 檔案的路徑。
NA
--save,-s
儲存至使用者的認證存放區。
NA
--noSchemaValidation,-n
禁用結構描述驗證。
[預設:false]
如果 connectvalidate 方法都成功,執行測試會產生輸出。此指令也會檢查輸入與結構描述是否相符,輸出與預期輸出是否相符。
--save 選項會將連線指令的輸出儲存到使用者主目錄下 .flow 資料夾內的 creds.json 檔案中。執行此指令的輸出是連線儲存在檔案中所依據的金鑰。稍後需要使用此金鑰將儲存的驗證資訊傳遞至另一個 test 指令。
測試查詢 
查詢的結構與其他加工品不同,版本化的方式與其他加工品也不同。名稱本身會作為版本使用。如果需要較新功能,會在查詢 JavasSript 檔案中以新名稱建立新查詢。使用下列指令針對查詢執行測試指令:
可用選項包括:
選項
描述
資料類型
--version
顯示版本編號。
[布林值]
--help
顯示說明。
[布林值]
--timeout
操作的逾時。--timeout 選項可指定以毫秒微單位的逾時 (預設為 30000 ms)。此選項可確保程式碼在指定時間內完成,且它會捕捉錯誤,例如回撥的遺失引動。
[預設:30000]
--logLevel,-1
設定記錄層級。
[預設:"info"]
--projectDir,-d
專案的父目錄。
NA
--connection,-c
要插入之連線的 uid。
NA
--access_token,-a
預期輸出變數的名稱。
NA
--input,-i
testData 檔案的路徑。
NA
--output,-o
預期輸出變數的名稱。
NA
--testDataFile,-f
testData 檔案的路徑。
NA
--searchById
用於搜尋的 id。
NA
--searchByValue
用於搜尋的值。
NA
--filter
用來搜尋項目的篩選器。
NA
flow test lookup <name> <method>
查詢有 searchByIdsearchByValue 這兩個搜尋選項,以及下列三個分頁相關選項。
查詢會立即傳回所有資料,此選項不需要任何動作。
應用程式支援分頁 API - 查詢程式碼會呼叫 getNextPage api,並將可以協助服務從下一頁傳回資料的引數傳遞給它。當使用者在查詢欄位值的清單中按一下「載入更多」選項時,會將此資訊傳遞至查詢。
不支援分頁 - 應用程式會查詢資料,且查詢服務會截斷資料,以僅顯示目前頁面及所有之前頁面的記錄。
測試動作 
測試動作與測試查詢類似。查詢不會作為測試動作的一部份進行測試。輸入應已包含查詢以其他方式提供的結果。
欲測試動作,請執行下列操作:
1. 將範例輸入與範例輸出 JSON 寫入到測試資料檔案中。關於輸入與輸出範例的資訊,請參閱教學專區 B
2. 從專案目錄中,使用下列選項執行測試指令:
選項
描述
資料類型
--version
顯示版本編號。
[布林值]
--help
顯示說明。
[布林值]
--timeout
操作的逾時。--timeout 選項可指定以毫秒微單位的逾時 (預設為 30000 ms)。此選項可確保程式碼在指定時間內完成,且它會捕捉錯誤,例如回撥的遺失引動。
[預設:30000]
--logLevel,-1
設定記錄層級。
[預設:"info"]
--artifactVersion,-v
要測試之加工品的版本。
[預設:"v1"]
--connection,-c
要插入之連線的 uid。
NA
--access_token,-a
預期輸出變數的名稱。
NA
--projectDir,-d
專案的父目錄。
[預設:"."]
--input,-i
testData 檔案的路徑。
NA
--output,-o
預期輸出變數的名稱。
NA
--testDataFile,-f
testData 檔案的路徑。
NA
--noSchemaValidation,-n
禁用結構描述驗證。
[預設:false]
測試觸發器 
測試觸發器與測試動作、連線及查詢略有不同。您可使用下列選項執行測試指令:
下表描述可用於測試觸發器的各選項。
選項
描述
資料類型
--version
顯示版本編號。
[布林值]
--help
顯示說明。
[布林值]
--timeout
操作的逾時。--timeout 選項可指定以毫秒微單位的逾時 (預設為 30000 ms)。此選項可確保程式碼在指定時間內完成,且它會捕捉錯誤,例如回撥的遺失引動。
[預設:30000]
--logLevel,-1
設定記錄層級。
[預設:"info"]
--artifactVersion,-v
要測試之加工品的版本。
[預設:"v1"]
--connection,-c
要插入之連線的 uid。
NA
--access_token,-a
預期輸出變數的名稱。
NA
--projectDir,-d
專案的父目錄。
[預設:"."]
--input,-i
輸入變數的名稱。
NA
--output,-o
預期輸出變數的名稱。
NA
--testDataFile,-f
testData 檔案的路徑。
NA
--noSchemaValidation,-n
禁用結構描述驗證。
[預設:false]
--polling,-p
指示觸發器是輪詢觸發器。
NA
--event,-e
要測試的事件。
NA
--mockData,-m
保留事件 mockdata 之變數的名稱。
NA
--interval,-t
以秒為單位的觸發間隔。
[預設:15]
--stopAfter,-s
觸發器的呼叫數上限。
[預設:1]
您必須指定要測試哪一種方法。對於輪詢觸發器,方法為 executeactivate
有關測試各種加工品的範例,請參閱教學專區 B
這是否有幫助?