首页 > 解决方案 > 间谍 Guice 模块在单元测试期间抛出 CreationException

问题描述

在我的单元测试中,我想监视我的 guice 模块和模块功能的存根部分。但是当我使用 spied 模块创建注入器时它会抛出错误,说:

例子:


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 模块?

标签: javaunit-testingmockingmockitoguice

解决方案


推荐阅读