【发布时间】:2020-04-20 09:42:32
【问题描述】:
我可能遗漏了一些东西,但我注意到了一个琐碎的问题。我有一个来自 JSON 文件的被测端点的输入有效负载。这是输入有效载荷:
{
"KJ01": {
"vin": "MMTestingVIN00001",
"sskwngtrghastsp": "20200419133000",
"wngdetail": [
{
"wngsysmbol": "WASH",
"wngclass": "S",
"wngcondflg": "1"
}
]
}
这是我得到的回应的一部分
{
"items": [
{
"vin": "MMTestingVIN00001",
"dealerCode": "1",
"nmscCode": "1",
"timestamp": "2020-04-19T13:30:00.000Z",
"warning": {
"warningLightType": {
"symbol": "WASH",
"type": "S",
"priority": "1"
}
}
}
]
}
响应包含 items 数组中的许多对象,我正在查找数组索引号,我在其中获取具有 VIN = MMTestingVIN00001 的对象 因此,假设在 items 数组的索引 10 处找到了所需的响应项目对象。
- def foundAt = 10
当我执行以下操作时:
* def Payload = read(datafile)
* json JsonPayload = Payload
# expecting WASH == WASH
* match response.items[foundAt].warning.warningLightType.symbol == JsonPayload.KJ01.wngdetail[0].wngsysmbol
它给了我一个错误:
Could not parse token starting at position 7. Expected ?, ', 0-9, *
但是当我在 LHS 上的匹配表达式中明确提到索引号 10 时,即
match response.items[10].warning.warningLightType.symbol == JsonPayload.KJ01.wngdetail[0].wngsysmbol
或者我将 LHS 与 RHS 交换,意思不是匹配输出 == 输入,如果我匹配输入 == 输出,即
match JsonPayload.KJ01.wngdetail[0].wngsysmbol == response.items[foundAt].warning.warningLightType.symbol
在上述两种情况下都有效。
所以作为一个结论,如果我们做一个匹配输出表达式 == 输入表达式,其中输出表达式有一个数组索引,该数组索引被一个变量引用,例如 'foundAt',即它有类似 - items[foundAt] 的东西,它不喜欢它并给出错误。
在这种情况下,作为一种解决方法,当我们给 match inputexpression == outputexpression 时,它就会起作用。
我在这里遗漏了什么琐碎的东西吗?我阅读了有关匹配表达式的 LHS 和 RHS 必须如何的文档,但无法使用该信息来更改我的测试。
有人可以帮帮我吗?我希望我现在清楚我的问题了。
【问题讨论】:
标签: karate