AssertJ JSON 属性 检查
AssertJ JSON property check
我有 JSON对象实例,其中包含一些 属性、
{
"name":"testName",
"age":"23"
}
我使用以下断言,但它失败了。这是在 assertj.
中测试 JSON 的正确方法吗?
assertThat(jsonObject).hasFieldOrProperty("name");
我认为这与以下事实有关 JSONObject
就像一个具有键值对的映射,而 AssertJ 期望 Java bean 样式对象检查 属性 存在。我从 https://joel-costigliola.github.io/assertj/core/api/org/assertj/core/api/AbstractObjectAssert.html#hasFieldOrProperty(java.lang.String) 的文档中了解到这一点。希望我找对地方了。
我的意思是说地图或 JSONObject
没有在其中声明供 AssertJ 查找的字段。
我想你可以用JSONObject.has( String key )
代替。
如果你想对 JSON 对象做任何严肃的断言,我会推荐 JsonUnit https://github.com/lukas-krecan/JsonUnit
首先,您需要使用 map
class 遍历键集(节点),然后验证键集是否包含您要查找的特定节点。
Map<String, Object> read = JsonPath.read(JSONObject, "$");
assertThat(read.keySet()).contains("name");
我有 JSON对象实例,其中包含一些 属性、
{
"name":"testName",
"age":"23"
}
我使用以下断言,但它失败了。这是在 assertj.
中测试 JSON 的正确方法吗?assertThat(jsonObject).hasFieldOrProperty("name");
我认为这与以下事实有关 JSONObject
就像一个具有键值对的映射,而 AssertJ 期望 Java bean 样式对象检查 属性 存在。我从 https://joel-costigliola.github.io/assertj/core/api/org/assertj/core/api/AbstractObjectAssert.html#hasFieldOrProperty(java.lang.String) 的文档中了解到这一点。希望我找对地方了。
我的意思是说地图或 JSONObject
没有在其中声明供 AssertJ 查找的字段。
我想你可以用JSONObject.has( String key )
代替。
如果你想对 JSON 对象做任何严肃的断言,我会推荐 JsonUnit https://github.com/lukas-krecan/JsonUnit
首先,您需要使用 map
class 遍历键集(节点),然后验证键集是否包含您要查找的特定节点。
Map<String, Object> read = JsonPath.read(JSONObject, "$");
assertThat(read.keySet()).contains("name");