当返回的数组无序时,如何测试正确的测试结果?我的测试失败,因为它们在数组中的顺序在每次测试运行时都是不同的。如何修复无序数组的这个或帐户?
mockMvc.perform(delete("/deleteSomeObject" + "/objIdLong" + "/objFKeyString"))
.
.
.andExpect(jsonPath("$[0].id.objIdLong", is(533252)))
.andExpect(jsonPath("$[0].id.objFKeyString", is("SomeString")))
.andExpect(jsonPath("$[1].id.objIdLong", is(642654252)))
.andExpect(jsonPath("$[1].id.objFKeyString", is("ThisString")))
.andExpect(jsonPath("$[2].id.objIdLong", is(4624352)))
.andExpect(jsonPath("$[2].id.objFKeyString", is("SomeOtherString")));
答案 0 :(得分:0)
您可以使用'any element'指令并防止误报,其中一个元素具有预期的objIdLong
,而另一个元素具有预期的objFKeyString
,您可以组合访问者。
这样的事情:
.andExpect(jsonPath('$.id[?(@.objIdLong == 533252 && @.objFKeyString == \'SomeString\')]').exists())
.andExpect(jsonPath('$.id[?(@.objIdLong == 642654252 && @.objFKeyString == \'ThisString\')]').exists())
.andExpect(jsonPath('$.id[?(@.objIdLong == 4624352 && @.objFKeyString == \'SomeOtherString\')]').exists())
只要返回的JSON包含:
,这些断言就会被视为真id
和objIdLong=533252
objFKeyString="SomeString"
子文档
id
和objIdLong=642654252
objFKeyString="ThisString"
子文档
id
和objIdLong=4624352
objFKeyString="SomeOtherString"
子文档