測試連接器
測試指令
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 oauth 與 flow 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_uri 為 https://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] |
如果 connect 與 validate 方法都成功,執行測試會產生輸出。此指令也會檢查輸入與結構描述是否相符,輸出與預期輸出是否相符。
--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>
查詢有 searchById、searchByValue 這兩個搜尋選項,以及下列三個分頁相關選項。
• 查詢會立即傳回所有資料,此選項不需要任何動作。
• 應用程式支援分頁 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] |
您必須指定要測試哪一種方法。對於輪詢觸發器,方法為 execute 與 activate。