在尝试将布尔响应对象与布尔变量进行比较时,我遇到了问题。以下内容应该作为基本比较,还是应该以不同的方法比较布尔值?
我有以下回复
{
"data": {
"updateNetworkSecurity": {
"enabled": true
}
}
但是,当将启用标志与设置为 true 布尔值的变量进行比较时,您可以看到比较失败,因为它认为该值是数组或列表,尽管两个值周围都没有括号,并且两个值都是 BOOLEAN,如错误末尾的类型比较所示。
match failed: EACH_EQUALS
$ | actual is not an array or list (BOOLEAN:BOOLEAN)
true
true
这里是变量赋值
* def securityStatusInput = true
这是比赛电话
* match $.data.updateNetworkSecurity.enabled == securityStatusInput
解决列表/数组问题的一些简单故障排除:
如果我将匹配设置为
* match $.data.updateNetworkSecurity[0].enabled == securityStatusInput
,我会收到以下错误:
match failed: EQUALS
$ | actual path does not exist (STRING:BOOLEAN)
'#notpresent'
true
将上述设置为通配符值
* match $.data.updateNetworkSecurity[*].enabled == securityStatusInput
也失败:
match failed: EQUALS
$ | data types don't match (LIST:BOOLEAN)
[]
true
对我来说效果很好:
* def response =
"""
{
data: {
updateNetworkSecurity: {
enabled: true
}
}
}
"""
* match response.data.updateNetworkSecurity.enabled == true
很可能您的对象嵌套出现了错误。一个提示 - 当您使用通配符时,您总是会得到一个数组,因此请注意这一点。如果您要进行简单匹配,请避免使用通配符。团队通常不会遇到您所描述的问题,因为我们鼓励您一次匹配 JSON 块,而不是一次匹配一个原始值。
使用变量?这应该也有效:
* def securityStatusInput = true
* def response = {"data":{"updateNetworkSecurity":{"enabled":true}}}
* match response.data.updateNetworkSecurity.enabled == securityStatusInput