【发布时间】:2021-07-16 12:41:43
【问题描述】:
鉴于以下从 REST 调用返回的 JSON:
{"Statistik Eintraege":
[{"Wert":"1","Anzahl":41},
{"Wert":"","Anzahl":482},
{"Wert":"-3","Anzahl":1},
{"Wert":"-1","Anzahl":3},
{"Wert":"-2","Anzahl":3}],
"Statistik Typ":"BlahStatistik"}
...我想验证 Wert='' 的“Anzahl”,即本例中的:482。
我在 java 集成测试中尝试的是:
.andExpect(jsonPath("$..[?(@.Wert == '')].Anzahl", hasSize(482)));
例外:
java.lang.AssertionError: JSON path "$..[?(@.Wert == '')].Anzahl"
Expected: a collection with size <482>
but: collection size was <1>
我还能尝试什么?
【问题讨论】:
-
我不知道,但我确信
hasSize不是正确的断言,是您错误的直接原因。你没有一些isEqualTo或类似的吗? -
确实,
hasSize会检查那里是否有一个包含 482 个值的数组,而不是如果你有一个值为 482 的数字。 -
我试过了: .andExpect(jsonPath("$..[?(@.Wert == '')].Anzahl", equalTo(482)));它似乎更好: java.lang.AssertionError: JSON path "$..[?(@.Wert == '')].Anzahl" 预期: 但是:是 所以更好,但还没有解决...
-
通过以下方式解决它:.andExpect(jsonPath("$..[?(@.Wert == '')].Anzahl").value(482));