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
我有一个代码,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