Вопрос:

Hamcrest: непонятное сообщение об исключении?

java junit hamcrest

7 просмотра

1 ответ

641 Репутация автора

Хотя английский не мой родной язык, я все же думаю, что следующее сообщение об ошибке от Hamcrest является неправильным.

У меня есть следующий метод проверки:

private void validateReturnedCode() {

    List<HTTPStatusCodes> expectedStatusCodesList = requestData.getExpectedHttpCodes().getStatusCodes();
    HTTPStatusCodes actualReturnedCode = fromCode(response.getStatusCode());
    assertThat(expectedStatusCodesList, hasItem(actualReturnedCode));
}

Предположим, что visibleStatusCodesList равен {REDIRECT_FOUND}, а actualReturnedCode в порядке.

Очевидно, здесь должно быть исключение, но я не могу понять логику сообщения об ошибке:

java.lang.AssertionError: 
Expected: a collection containing <OK>
     but: mismatches were: [was <REDIRECT_FOUND>]

Не было бы лучше, если бы это было:

java.lang.AssertionError: 
Expected: a status code one of <REDIRECT_FOUND>
     but: mismatches were: [value was <OK>]

??

Ожидание должно было получить REDIRECT_FOUND, но фактически я получил ОК!

Если я ошибаюсь, не могли бы вы объяснить?

Спасибо!

Автор: dushkin Источник Размещён: 11.08.2019 06:37

Ответы (1)


0 плюса

7168 Репутация автора

Первый аргумент assertThat()метода утверждает, что это должно быть «фактическое» значение, которое вы получаете:

assertThat

public static <T> void assertThat(T actual,
                                  Matcher<? super T> matcher)

Итак, вы actualReturnedCodeдолжны быть впереди. Используйте isIn()совпадение, чтобы проверить, находится ли значение внутри коллекции:

assertThat(actualReturnedCode, isIn(expectedStatusCodesList));
Автор: Progman Размещён: 11.08.2019 08:47
Вопросы из категории :
32x32