Я хочу использовать mockito и заглушить метод. Я хочу, чтобы метод возвращал разные значения на основе stubbing. Но он всегда возвращает первый вывод. Ниже, как моя установкаИспользование Mockito для нескольких вызовов одного и того же метода и разных выходов
Class Controller{ //this is singleton class
private final Foo foo=AFacftory.getFoo(); //this variable is initialized only once for the whole life cycle
//Some code below that I want to test is here
foo.functionInFoo()
}
Class Foo{
int functionInFoo(){
}
}
Test1
Foo foo=Mockito.mock(Foo.class)
TestSettings.Provider.get().setTestBeanProvider(Foo.class, foo);
Mockito.when(foo.functionInFoo()).thenReturn(XXX);
hitAUrl();
//do some testing here using xxx.
Test2
Foo foo=Mockito.mock(Foo.class)
TestSettings.Provider.get().setTestBeanProvider(Foo.class, foo);
Mockito.when(foo.functionInFoo()).thenReturn(YYY);
hitAUrl();
//do some testing here using YYY.
Переменная Foo конкретизируется только один раз в течение всего срока службы, поскольку это является частью контроллера. Итак, когда я запускаю свой первый тест, контроллер инициализируется, когда я нажимаюAUrl(), и он получает посмеянный экземпляр Foo и возвращает XXX. Но когда я запустил второй тест, он все равно будет иметь предыдущий экземпляр mock и снова вернуть XXX. Я хочу, чтобы он вернул YYY. Если я перезапущу сервер после Test1, он вернет YYY. Но это должно работать без перезапуска. Пожалуйста, дайте мне знать, как я могу это исправить. Любая помощь действительно ценится.
Этот вопрос здесь ответил (проверьте 2-й ответ) http://stackoverflow.com/questions/4216569/how-to-tell-a-mockito-mock-object-to-return-something-different-the- следующее время она? RQ = 1 – Srikanta