我正在使用MockMvc来测试返回 JSON 内容的 API,并且该 JSON 可能包含一个名为“ shares”的字段作为空数组,或者可能根本不存在(我的意思是“ shares”字段)。JSON 示例:{ "id":1234, ..... "shares":[]}//or{ "id":1234, ....}我如何断言此字段为空或不存在喜欢: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())
4 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
这就是您检查 json 负载中是否不存在该字段的方法。
.andExpect(jsonPath("$.fieldThatShouldNotExist").doesNotExist())
如果您希望能够测试它是否存在且为空或不存在,则必须编写自己的自定义匹配器来创建类似 XOR 的行为。
杨__羊羊
TA贡献1943条经验 获得超7个赞
使用 MockMVC查看 JsonPath OR 条件
.andExpect(jsonPath("$.isPass", anyOf(is(false),is(true))));
倚天杖
TA贡献1828条经验 获得超3个赞
如果你有这样的事情:
{ "arrayFieldName": [] }
您可以使用:
.andExpect( jsonPath( "$.arrayFieldName", Matchers.empty() );
那更干净。
料青山看我应如是
TA贡献1772条经验 获得超8个赞
import static org.hamcrest.collection.IsEmptyCollection.empty; .andExpect(jsonPath("$.isPass",empty() ));
添加回答
举报
0/150
提交
取消