Hamcrest 检查值是否为 null 或空数组

Hamcrest check if value is null or empty array

我有一个代码,returns JSON,其中一个字段可能为 null 或空数组。

我有这个代码要检查:

import static org.hamcrest.core.AnyOf.anyOf;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.Matchers.blankOrNullString;

// io.restassured.response
getResponse.then()
   .assertThat()
   .body("entity.fields", anyOf(nullValue(), emptyArray()))

但输出不清楚

java.lang.AssertionError: 1 expectation failed.
JSON path entity.fields doesn't match.
Expected: (null or an empty array)
  Actual: []

这个设置有什么不正确的地方?

JSON 数组是值的列表,所以使用 empty()

而不是 emptyArray()
assertThat().body("entity.fields", anyOf(nullValue(),empty()));

何时

{"entity":{"fields":"Wilfred"}}

Expected: (null or an empty collection)

Actual: Wilfred

返回断言错误

何时

{"entity":{"fields":null}} or {"entity":{"fields":[]}}

正确验证

我以前遇到过这个问题,在搜索详细信息时发现 this link