Mockito. Проверьте аргументы метода.

Я гуглил по этому поводу, но не нашел ничего подходящего. У меня есть что-то вроде этого:

Object obj = getObject();
Mockeable mock= Mockito.mock(Mockeable.class);
Mockito.when(mock.mymethod(obj )).thenReturn(null);

Testeable testableObj = new Testeable();
testableObj.setMockeable(mock);
command.runtestmethod();

Теперь я хочу убедиться, что mymethod (Object o) , который вызывается из runtestmethod () , был вызван с Object o , а не любые другие. Но я всегда прохожу тест, независимо от того, что я ставлю на проверку, например, с помощью:

Mockito.verify(mock.mymethod(Mockito.eq(obj)));

или

Mockito.verify(mock.mymethod(Mockito.eq(null)));

или

Mockito.verify(mock.mymethod(Mockito.eq("something_else")));

Я всегда прохожу тест. Как я могу выполнить эту проверку (если это возможно)?

Спасибо.

187
задан Ilker Cat 1 July 2018 в 06:12
поделиться

1 ответ

  • Вам не нужен сопоставитель eq, если вы не используете другие сопоставители.
  • Вы используете неправильный синтаксис — вызов вашего метода должен находиться за пределами .verify(mock). Теперь вы инициируете проверку результата вызова метода, ничего не проверяя (не выполняя вызов метода). Следовательно, все тесты проходят.

Ваш код должен выглядеть так:

Mockito.verify(mock).mymethod(obj);
Mockito.verify(mock).mymethod(null);
Mockito.verify(mock).mymethod("something_else");
49
ответ дан 23 November 2019 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: