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");