Как мне создать собственное сообщение из пользовательского Mockito ArgumentMatcher? - PullRequest
4 голосов
/ 19 февраля 2011

Я пишу ArgumentMatcher, и внутренности сравнения сводятся к чему-то вроде:

return A.value().equals(B.value()) && A.name().equals(B.name());

К сожалению, когда не проходит, Mockito просто говорит мне, что это не удалось.Я хочу добавить пользовательское сообщение, такое как «Значения не совпадают» или «Имена не совпадают» (конечно, я хотел бы дать больше информации, но пока я не смогу разобраться в этом простом случае, в чем смыслдалее).

Ранее (до работы с Mockito) я помню, что у сопоставителей было два метода - один для проверки совпадения и один для генерирования сообщения об ошибке (правда, было неудобно писать оба метода, ноЯ скучаю по второму способу сейчас).

Есть идеи, как это сделать?Любая помощь приветствуется!

Ответы [ 3 ]

4 голосов
/ 19 февраля 2011

Теперь я понял. Hamcrest предоставляет метод «descriptionTo». Это эквивалентно методу, который я помню из EasyMock. Вы просто добавляете свои условия ошибки к объекту Description, и у альта появляется лучшее сообщение об ошибке.

3 голосов
/ 21 мая 2017

Обычным способом предоставления пользовательских сообщений является метод Mockito.description():

verify(writer, never().description("exception was thrown"))
  .println(any(Object.class));
0 голосов
/ 06 ноября 2018

Если вы реализуете интерфейс org.mockito.ArgumentMatcher, тест вызовет свой метод toString(), чтобы создать "Требуемую" сторону сообщения сравнения. Реализация этого метода путем простого возврата значения метода toString() на ожидаемый объект, использованный для инициализации ArgumentMatcher, вероятно, даст вам полезное сообщение.

...