ThingWorx Flow > ThingWorx Flow SDK > 連接器測試自動化
連接器測試自動化
連接器測試協助程式提供了 CLI 的程式設計介面。在 CLI 上提供的所有選項也可透過程式設計介面提供。將使用 CLI 的互動執行轉換為自動迴歸測試時,此功能很有用。
ptc-flow-test-helper npm 模組提供的 API 可自動化連接器整合測試案例。您可以將這些 API 與任何 node.js 測試架構 (例如 mocha) 搭配使用來自動化連接器測試案例。
此 npm 模組提供三個 API:
ConnectorTestHelper - 提供用來呼叫連接器加工品的 API
ConnectorSyntaxTestHelper - 核對連接器加工品的語法
JSONUtils - 提供要在測試案例中作為宣告使用的 JSON 公用程式
ConnectorTestHelper
它提供用來測試下列連接器加工品的 API:
ActionAPI - 連接器動作
ConnectionAPI - 連接器連線
LookupAPI - 連接器查詢
TriggerAPI - 連接器觸發器
CredsAPI - 用來讀取及儲存連接器驗證的公用程式
ActionAPI
在測試個別測試案例時,必須傳遞使用此方法在測試套件設定的資訊。
setTestInfo 方法會傳回由 setTestInfo 設定的資訊。此方法會針對測試套件的層級設定資訊。
簽章:setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
access_token: <string>,
connection: <string>,
skipSchemaValidation: <boolean>,
logLevel: <string>
}
下表說明上述範例中的每個參數:
參數
描述
name
設定要由測試案例測試的動作
connector
設定要由測試案例測試的連接器
version
設定要測試的動作版本
access_token
如果連接器使用 OAuth 驗證機制,請提供儲存在 creds.json 檔案中之 OAuth 物件的名稱。
connection
如果連接器使用連線驗證機制,請提供儲存在 creds.json 檔案中之連線物件的名稱。
skipSchemaValidation
設定為 true 可跳過根據輸入或輸出結構描述驗證動作輸入或輸出
logLevel
設定 ActionAPI 要使用的記錄層級
呼叫動作加工品時,ActionAPI 會使用在此方法中設定的資訊。
getTestInfo 方法:此方法會傳回由 setTestInfo 設定的資訊
簽章:getTestInfo()
傳回類型 (物件資訊)
方法測試
此方法會執行提供的動作加工品,並傳回連接器動作傳回的結果。
Signature: test(Object input [optional], Object options [optional])
傳回類型承諾物件
input [optional] - 提供與動作輸入 JSON 結構描述相符之動作加工品接受的輸入物件。
options [optional] - 提供包括在物件資訊中定義之部份或全部內容的物件。此選項物件的內容值會取代在測試套件層級由 setTestInfo 方法在資訊物件中設定的內容。
例如,針對 action1 連線設定了測試套件層級資訊。您可以使用此選項物件,透過傳遞 name : action2 內容,來呼叫執行 action2 連接器而非 action1 的測試方法。如果 action2 用來建立或刪除測試套件針對 action1 所需或建立的測試資料,此功能很有用。
ConnectionAPI
在測試個別測試案例時,必須傳遞使用此方法在測試套件設定的資訊。
setTestInfo 方法:此方法會傳回 setTestInfo 設定的資訊。此方法會設定測試套件層級資訊。
簽章: setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
skipSchemaValidation: <boolean>,
logLevel: <string>
下表說明上述範例中的每個參數:
參數
描述
name
設定要由測試案例測試的連線
connector
設定要由測試案例測試的連接器
version
設定要測試的連線版本
skipSchemaValidation
設定為 true 可跳過根據輸入或輸出結構描述驗證動作輸入或輸出
logLevel
設定 ConnectionAPI 要使用的記錄層級
呼叫連線加工品時,ConnectionAPI 會使用在此方法中設定的資訊。
getTestInfo 方法 - 會傳回由 setTestInfo 設定的資訊
簽章:getTestInfo() - 傳回類型 (物件資訊)
方法測試
方法會執行提供的連線加工品,並傳回由連接器連線加工品傳回的結果。
Signature: test(Object input [optional], Object options [optional])
傳回類型承諾物件
input [optional] - 提供與連線輸入 JSON 結構描述相符之連線加工品接受的輸入物件。
options [optional] - 提供包括在物件資訊中定義之部份或全部內容的物件。此選項物件的內容值會取代在測試套件層級由 setTestInfo 方法在資訊物件中設定的內容。
例如,針對 connection1 連線設定了測試套件層級資訊。您可以使用此選項的物件,透過傳遞 name : connection2 內容,來呼叫執行 connection2 連接器而非 connection1 的測試方法。如果 connection2 用來建立或刪除測試套件針對 connection1 所需或建立的測試資料,此功能很有用。
LookupAPI
setTestInfo 方法:此方法會傳回 setTestInfo 設定的資訊。此方法會設定測試套件層級資訊。
簽章:setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
connection: <string>,
access_token: <string>
logLevel: <string>
}
下表說明上述範例中的每個參數:
參數
描述
name
設定要由測試案例測試的查詢
connector
設定要由測試案例測試的連接器
version
設定要測試的查詢版本
connection
如果連接器使用連線驗證機制,請提供儲存在 creds.json 檔案中之連線物件的名稱。
access token
如果連接器使用 OAuth 驗證機制,請提供儲存在 creds.json 檔案中之 OAuth 物件的名稱。
skipSchemaValidation
設定為 true 可跳過根據輸入或輸出結構描述驗證動作輸入或輸出
logLevel
設定 LookupAPI 要使用的記錄層級
方法測試
方法會執行提供的查詢加工品,並傳回由連接器查詢加工品傳回的結果。
Signature: test(String method, Object input [optional], Object options [optional])
傳回類型承諾物件
method:提供需要測試的查詢方法名稱。
input [optional]:提供查詢方法接受的輸入物件。
options [optional]:提供包括在物件資訊中定義之部份或全部內容的物件。此選項物件的內容值會取代在測試套件層級由 setTestInfo 方法在資訊物件中設定的內容。
此外,您也可以為此物件提供下列內容。
searchById
設定要用於搜尋的 id
searchByValue
設定要用於搜尋的值
filter
設定用來搜尋項目的篩選器
例如,如果您要透過提供 SearchById 值來執行查詢方法,請使用 options 物件提供此資訊。
TriggerAPI
在測試個別測試案例時,需要傳遞使用此方法在測試套件設定的資訊。
setTestInfo 方法 - 會傳回由 setTestInfo 設定的資訊。此方法會設定測試套件層級資訊。
簽章: setTestInfo (Object info)
info = {
name: <string>,
connector: <connector object>,
version: <integer>,
access_token: <string>,
connection: <string>,
skipSchemaValidation: <boolean>,
logLevel: <string>
polling: <boolean>
}
下表說明上述範例中的每個參數:
參數
描述
name
設定要由測試案例測試的觸發器
connector
設定要由測試案例測試的連接器
version
設定要測試的觸發器版本
access_token
如果連接器使用 OAuth 驗證機制,請提供儲存在 creds.json 檔案中之 OAuth 物件的名稱。
connection
如果連接器使用連線驗證機制,請提供儲存在 creds.json 檔案中之連線物件的名稱。
skipSchemaValidation
設定為 true 可跳過根據輸入/輸出結構描述驗證動作輸入或輸出
polling
如果觸發器類型為輪詢觸發器,會設定為 True。
logLevel
設定 TriggerAPI 要使用的記錄層級
呼叫動作加工品時,TriggerAPI 會使用在此方法中設定的資訊。
getTestInfo 方法 - 會傳回由 setTestInfo 設定的資訊
簽章:getTestInfo() - 傳回類型 (物件資訊)
方法測試
方法會執行提供的觸發器加工品,並傳回由連接器觸發器加工品傳回的結果。
Signature: test(String method, String event, Object input [optional], Object options [optional])
傳回類型,承諾物件
method - 提供需要測試的觸發器方法名稱。
event - 提供在觸發器輸入結構描述中定義的觸發器事件。
input [optional] - 提供觸發器方法接受的輸入物件。
options [optional] - 提供包括在物件資訊中定義之部份或全部內容的物件。此選項物件的內容值會取代在測試套件層級由 setTestInfo 方法在資訊物件中設定的相關內容。
此外,您也可以為此物件提供下列內容,以用於測試輪詢觸發器。
interval
設定以秒為單位的觸發間隔。
stopAfter
設定觸發器的呼叫數上限。
meta
設定中繼物件。
unixTime
用來描述時間點的系統,定義為大概的秒數
例如,如果您要在測試輪詢觸發器時設定 unixTime,請使用上述選項。
CredsAPI
在此檔案中使用的方法如下:
getConnectionById - 根據提供的連線物件名稱,傳回連線詳細資訊。
簽章:getConnectionById(uid)
getConnectionByIdWithHandle - 傳回 handle 物件中的連線詳細資訊。
簽章:getConnectionByIdWithHandle(uid)
getOauthById - 根據提供的 OAuth 物件名稱,傳回 OAuth 詳細資訊。
簽章:getOauthById(uid)
getOauthByIdWithHandle - 傳回 handle 物件中的 OAuth 詳細資訊。
簽章:getOauthByIdWithHandle()
saveConnection - 儲存連線。
簽章:saveConnection()
saveOauth - 將 OAuth 詳細資訊儲存在 creds.json 檔案中。
簽章:saveOauth()
JSONUtils API
JSON 宣告程式庫
compareJSONs (Object actualJSON, Object expectedJSON, Object ignoreDiff [optional]) returnType promise:用來比較 json 物件的宣告方法,如果兩個 json 物件都相符,會解決其傳回的承諾,否則會拒絕承諾並顯示錯誤 ignoreDiff = { keys : [array of fields to be ignored from comparison]}
verifyArraySubset (Object actualJSONArray, Object expectedJSONArray, Object ignoreDiff [optional]) returnType promise
用來比較 actualJSONArray 是否是 expectedJSONArray 子集的宣告方法
如果 actualJSONArray 是 expectedJSONArray 相符項目的子集,會解決其傳回的承諾,否則會拒絕承諾並顯示錯誤
ignoreDiff = { keys : [array of fields to be ignored from comparison]}
ConnectorSyntaxTestHelper API
此方法會驗證連接器加工品的語法。
可在單元測試中使用此方法,如下所示:
/* eslint-env mocha */
const ConnectorSyntaxTestHelperClass = require('ptc-flow-test-helper').ConnectorSyntaxTestHelper
const connector = require('../../index')
const ConnectorSyntaxTestHelper = new ConnectorSyntaxTestHelperClass(connector)
describe('usgeocoderConnectorSyntaxTest', ConnectorSyntaxTestHelper.tests())