测试连接器
test 命令
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 毫秒)。此选项可确保代码在指定的时间内完成,并且它会捕获错误,例如缺少调用回调。 | [默认: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 服务器仅接受 https 请求。要使其能够处理请求配置,则需要证书。如果缺少证书,将出现以下错误:
[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 在内部运行快速 Web 服务器,以处理在身份验证成功或不成功时 IdP 发送的响应。
要测试 Oauth 配置,请执行以下操作:
1. 在项目目录中,执行以下命令:
flow test oauth <oauth name>
成功登录后,将打开 OAuth 验证器浏览器窗口。有关详细信息,请参阅本教程中给出的示例。
2. 选择要进行测试的配置,然后单击“验证 OAuth 配置”或单击“退出”。
测试连接
test connection 命令会调用 validate 方法,然后调用 connect 方法,根据输入架构测试输入,并根据输出架构测试输出。
要测试连接,请执行以下操作:
1. 在项目目录中,执行以下命令:
npm install
2. 在包中创建测试数据文件,并使用服务提供商信息填充其数据。
该文件包含用于 <projectDir>\test\testData 中的 test 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 毫秒)。此选项可确保代码在指定的时间内完成,并且它会捕获错误,例如缺少调用回调。 | [默认: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 选项将 connect 命令的输出存储到用户主目录的 .flow 文件夹中的 creds.json 文件。运行此命令会输出在文件中存储连接时所依据的密钥。稍后使用此密钥将存储的身份验证信息传递给另一个 test 命令。
测试查找
查找具有与其他构件不同的结构,并且不会以与其他构件相同的方式进行版本控制。名称本身就是版本。如果需要较新功能,则在查找 JavaScript 文件中创建具有新名称的新查找。使用以下命令针对“查找”执行 test 命令:
以下选项供您选择:
选项 | 说明 | 数据类型 |
---|
--version | 显示版本号。 | [布尔型] |
--help | 显示帮助。 | [布尔型] |
--timeout | 操作超时。--timeout 选项以毫秒为单位指定超时 (默认为 30000 毫秒)。此选项可确保代码在指定的时间内完成,并且它会捕获错误,例如缺少调用回调。 | [默认: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 毫秒)。此选项可确保代码在指定的时间内完成,并且它会捕获错误,例如缺少调用回调。 | [默认: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 毫秒)。此选项可确保代码在指定的时间内完成,并且它会捕获错误,例如缺少调用回调。 | [默认: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 | 用于保存事件的模拟数据的变量名称。 | NA |
--interval,-t | 设置触发间隔 (以秒为单位)。 | [默认:15] |
--stopAfter,-s | 触发器的最大调用次数。 | [默认:1] |
必须指定您想要测试的方法。对于轮询触发器,方法为 execute 和 activate。