У меня все еще есть некоторые трудности с Mockito. Я хочу иметь два тестовых примера для двух разных объектов. Поэтому я хочу моделировать поведение разных методов в зависимости от значения аргумента.Издевательский метод с разными значениями
Проблема в том, что когда я запускаю метод test()
, возвращаемое значение help
изменчивым является «b», и утверждение не возвращает true. Если я прокомментирую строку, обозначенную как (***)
, все будет хорошо.
Как вы можете видеть, я попытался использовать thenAnswer
вместо thenReturn
, но результат был тот же.
public class TestItAll {
TestClass test;
HelpClass a ;
HelpClass b;
@Before
public void init(){
a = new HelpClass("a");
b = new HelpClass("b");
Mockito.when(test.getHelp(a)).thenReturn("a");
/*Mockito.when(test.getHelp(a)).thenAnswer(
new Answer< String>() {
public String answer(InvocationOnMock invocation) {
return "a";
}
}); */
Mockito.when(test.getHelp(b)).thenReturn("b");//(***)
/*Mockito.when(test.getHelp(b)).thenAnswer(
new Answer< String>() {
public String answer(InvocationOnMock invocation) {
return "b";
}
}); */
}
@Test
public void testA(){
String help= test.getHelp(a);
Assert.assertEquals(help, "a");
}
/*@Test
public void testB(){
String help= test.getHelp(b);
Assert.assertEquals(help, "b");
}*/
}
Пожалуйста, не спрашивайте меня, почему я издеваюсь над тестовым объектом. Это всего лишь примерный пример более сложной ситуации.
Код для 'HelpClass' может быть полезен для получения ответа. (Вы также можете удалить не требуемую часть, то есть прокомментированные части). В качестве побочного примечания, неясно, что вы пытаетесь проверить здесь (возможно, поведение mockito?) –
'getHelp' не является окончательным, не так ли? Если это так, то код Mockito вообще не будет вызван. –