Модуль Spying Guice выдает исключение CreationException во время модульного тестирования - PullRequest
1 голос
/ 06 августа 2020

В моем модульном тесте я хочу шпионить за своим модулем 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?

...