Java 模拟Guice提供的对象
我有一个特定于应用程序的模块,它是configureJava 模拟Guice提供的对象,java,unit-testing,mockito,amazon-dynamodb,Java,Unit Testing,Mockito,Amazon Dynamodb,我有一个特定于应用程序的模块,它是configureDynamoDBMapper,另一类应用程序依赖于该映射器 public class ProjectAppServiceModule extends AbstractModule { @Override protected void configure() { } @Provides @Singleton public AmazonDynamoDB getAmazonDynamoDBClient() { retu
DynamoDBMapper
,另一类应用程序依赖于该映射器
public class ProjectAppServiceModule extends AbstractModule {
@Override protected void configure() {
}
@Provides
@Singleton
public AmazonDynamoDB getAmazonDynamoDBClient() {
return AmazonDynamoDBClientBuilder
.standard()
.withCredentials(new EnvironmentVariableCredentialsProvider())
.build();
}
@Provides
@Singleton
public DynamoDBMapper getDynamoDBMapper() {
return new DynamoDBMapper(getAmazonDynamoDBClient());
}
@Provides
@Singleton
public OrdersManager getOrdersManager() {
return new OrdersManager(getDynamoDBMapper());
}
}
现在,我想做单元测试,在单元测试中,我想得到一个模拟对象OrderManager
我试过了
@Mock
private DynamoDBMapper mockDynamoDBMapper;
Injector injector = createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(DynamoDBMapper.class).toInstance(mockDynamoDBMapper)
bind(OrdersManager.class).toInstance(mockOrdersManager);
}
});
我得到了一个错误,我不能用空对象实例化。有什么更好的办法来解决这个问题?我猜是走错了路 您需要确保喷油器是在模拟之后创建的。我不使用
@Mock
注释,而是创建如下方法:
@Before
public void before() {
DynamoDBMapper mockDynamoDBMapper = mock(DynamoDBMapper.class);
Injector injector = // ...
}
您需要确保喷油器是在模拟之后创建的。我不使用
@Mock
注释,而是创建如下方法:
@Before
public void before() {
DynamoDBMapper mockDynamoDBMapper = mock(DynamoDBMapper.class);
Injector injector = // ...
}