Почему совпадение с Hamcrest вInInnyOrder принимает массив, а не список? - PullRequest
0 голосов
/ 04 сентября 2018

Я использую совпадение containsInAnyOrder от Hamcrest при подтверждении ответа REST с помощью Rest Assured. Вот пример моего утверждения:

assertThat(
        body.jsonPath().getList("zones.name"),
        containsInAnyOrder(values.getName().toArray()));

Первый аргумент возвращает список. Второй аргумент (values.getName()) также возвращает список. Но Intellij IDEA показывает ошибку на mactcher: Не проверено создание универсального массива для параметра varargs . Когда я запускаю это утверждение, я получаю java.lang.AssertionError. Когда я преобразую второй аргумент в массив, например values.getName().toArray(), я получаю все, что работает, как ожидалось.

Так что я не могу понять, почему сравнение List со списком не работает, а List с массивом работает? Почему мне нужно преобразовать второй аргумент в массив?

1 Ответ

0 голосов
/ 04 сентября 2018

containsInAnyOrder принимает T....

Когда вы передаете List, вы сравниваете не элементы в body.jsonPath().getList("zones.name") с элементами в values.getName(), а с массивом из одного элемента, который содержит сам список. Поскольку строка не может быть равна списку, утверждение не выполняется.

...