我正在尝试编写一个JUnit测试,它检查接收到的JSON的值。我使用jsonPath在JSON中访问这些值。我想检查一个值是否为true
。对于简单的jsonPaths,它对我有效,但当我编写更复杂的jsonPath查询时,它不起作用,我得到了这个Assert错误:
Expected: is <true>
but: was <[true]>
字符串
我的JSON:
{...
,"trips":
[
{...
,"employee":{"name":"Ordinary Joe","login":"joe","contractor":true}
,...
},
...
],
...
}
型
有问题的Assert
.andExpect(jsonPath("$.trips[?(@.employee.login=='joe')].employee.contractor", is(true)));
型
我所尝试的
我试图匹配的值也与new Boolean(true)
,boolean[]
数组与一个true
值,并在检查is()
匹配器也与String.valueOf(true)
,但它也不匹配。
我的问题
我应该如何正确匹配这个true
值?这些[]
大括号在测试输出中到底意味着什么?
2条答案
按热度按时间7qhs6swi1#
在进一步的调查中,我实际上发现jsonPath以某种方式将获得的
true
值转换为带有一个项目的JsonArray
,因此无法使用is(true)
匹配器进行匹配。我不确定JsonPath为什么会这样做。我发现下面的工作变通使用
hasItem
匹配器代替:字符串
ctrmrzij2#
您可以使用==0表示true或==1表示false
字符串
$.. MyArray[?(@.CheckIfTrueOrFalse==0)].Item返回[“1st Item”]