与变量进行布尔比较会返回错误

问题描述 投票:0回答:1

在尝试将布尔响应对象与布尔变量进行比较时,我遇到了问题。以下内容应该作为基本比较,还是应该以不同的方法比较布尔值?

我有以下回复

{
  "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
karate
1个回答
0
投票

对我来说效果很好:

* 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
© www.soinside.com 2019 - 2024. All rights reserved.