В моем модульном тесте я хочу шпионить за своим модулем guice и заглушить часть функций модуля. Но он выдает ошибки, когда я создаю инжектор с использованием шпионского модуля, говоря:
- привязка xxx уже была настроена на xxxx
- Переопределение методов @Provides не разрешено
Пример:
class MyModule extends AbstractModule{
@Override
protected void configure() {
// Some bindings...
}
@Provides
public Car getCar(){
try{
return getCarFromDB();
} catch (...){
return getDefaultCar();
}
}
public Car getCarFromDB(){
// may fail with connection error
}
public Car getDefaultCar(){
// return a default car
}
}
Затем проверьте
@Test
public void testGetCar_WithDBConnectionFailed_ReturnesDefaultCar(){
MyModule spyModule = spy(new MyModule());
Injector injector = Guice.createInjector(spyModule); // errors
doThrow( ... some connection errors ...).when(spyModule).getCarFromDB();
Car car = injector.getInstance(Car.class);
Assertions.assert...
}
Есть ли способ шпионить за модулем guice?