在使用Rest Assured声明REST响应时,我正在使用Hamcrest的containsInAnyOrder
匹配器。这是我的断言示例:
assertThat(
body.jsonPath().getList("zones.name"),
containsInAnyOrder(values.getName().toArray()));
第一个参数返回一个列表。第二个参数(values.getName()
)也返回一个列表。但是Intellij IDEA在mactcher上显示了一个错误:未经检查的varargs参数的泛型数组创建。运行此断言时,我得到java.lang.AssertionError
。当我将第二个参数转换为数组,例如values.getName().toArray()
时,一切都会按预期进行。
所以我不明白为什么将列表与列表进行比较不起作用,而将列表与数组进行比较为什么不起作用?为什么我需要将第二个参数转换为数组?
答案 0 :(得分:0)
containsInAnyOrder
接受T...
。
传递List
时,并不是将body.jsonPath().getList("zones.name")
中的元素与values.getName()
中的元素进行比较,而是将包含列表本身的单元素数组进行比较。由于字符串不能等于列表,因此断言失败。