連接器測試自動化
連接器測試協助程式提供了 CLI 的程式設計介面。在 CLI 上提供的所有選項也可透過程式設計介面提供。將使用 CLI 的互動執行轉換為自動迴歸測試時,此功能很有用。
ptc-flow-test-helper npm 模組提供的 API 可自動化連接器整合測試案例。您可以將這些 API 與任何 node.js 測試架構 (例如 mocha) 搭配使用來自動化連接器測試案例。
此 npm 模組提供三個 API:
ConnectorTestHelper
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()
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())
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]}