我正在使用MockMvc测试一个返回JSON内容的API,该JSON可能包含一个名为shares的字段作为空数组,也可能根本不存在(我的意思是shares字段)。
JSON示例:
{
"id":1234,
.....
"shares":[]
}
//or
{
"id":1234,
....
}
字符串
我怎么能Assert这个字段是空的或者不存在
例如:
mvc.perform(
post("....url.......")
.andExpect(status().is(200))
// I need one of the following to be true, but this code will assert both of them, so it will fail
.andExpect(jsonPath("$.shares").isEmpty())
.andExpect(jsonPath("$.shares").doesNotExist())
型
5条答案
按热度按时间ax6ht2ek1#
这就是如何检查该字段在json payload中不存在。
字符串
如果你想测试它是否存在并且是空的或者它不存在,你必须编写自己的自定义Matcher来创建一个类似XOR的行为。把这个答案当作一个指南。在Hamcrest中进行测试,该测试在具有特定属性的列表中仅存在一个项
nzkunb0c2#
查看JsonPath OR condition using MockMVC
字符串
a7qyws3x3#
如果你有这样的东西:
字符串
您可以用途:
型
那个比较干净。
x759pob24#
为了捕获字段根本不在json主体中的情况,可以使用
doesNotHaveJsonPath()
:字符串
因此,如果您的
shares
字段不在body中,则此匹配器将通过。如果存在,则此匹配器将失败。x6yk4ghg5#
字符串