Spring MockMvc:断言 Json 字段为空数组或不存在

我正在使用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())


扬帆大鱼
浏览 296回答 4
4回答

江户川乱折腾

这就是您检查 json 负载中是否不存在该字段的方法。.andExpect(jsonPath("$.fieldThatShouldNotExist").doesNotExist())如果您希望能够测试它是否存在且为空或不存在,则必须编写自己的自定义匹配器来创建类似 XOR 的行为。

杨__羊羊

使用 MockMVC查看 JsonPath OR 条件.andExpect(jsonPath("$.isPass", anyOf(is(false),is(true))));

倚天杖

如果你有这样的事情:{ "arrayFieldName": [] }您可以使用:.andExpect( jsonPath( "$.arrayFieldName", Matchers.empty() );那更干净。

料青山看我应如是

import static org.hamcrest.collection.IsEmptyCollection.empty; .andExpect(jsonPath("$.isPass",empty() ));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java