我有一个包含一些属性的JSONObject实例,
{
"name":"testName",
"age":"23"
}我使用了下面的断言,但它失败了。这种在assertj中测试JSON的方法正确吗?
assertThat(jsonObject).hasFieldOrProperty("name");发布于 2020-01-21 18:52:45
我认为这与JSONObject类似于具有键-值对的映射的事实有关,而AssertJ则希望Java bean样式的对象检查属性是否存在。我从https://joel-costigliola.github.io/assertj/core/api/org/assertj/core/api/AbstractObjectAssert.html#hasFieldOrProperty(java.lang.String)的文档中理解了这一点。希望我找对地方了。
我的意思是说,AssertJ没有在map或JSONObject中声明要查找的字段。
我想你可以用JSONObject.has( String key )来代替。
发布于 2020-01-22 06:35:02
如果您想对JSON object进行任何严肃的断言,我推荐JsonUnit https://github.com/lukas-krecan/JsonUnit。
发布于 2020-07-25 11:13:16
首先,您需要使用map类遍历键集(节点),然后验证键集是否包含您正在查找的特定节点。
Map<String, Object> read = JsonPath.read(JSONObject, "$");
assertThat(read.keySet()).contains("name");https://stackoverflow.com/questions/59839076
复制相似问题