java - 间谍 Guice 模块在单元测试期间抛出 CreationException
问题描述
在我的单元测试中,我想监视我的 guice 模块和模块功能的存根部分。但是当我使用 spied 模块创建注入器时它会抛出错误,说:
- 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 模块?
解决方案
推荐阅读
- r - 我如何“阅读” R 的帮助函数的语法
- python - 如何在 Selenium 中处理 Firefox 打印对话框
- powershell-2.0 - powershell 2.X 是否支持下载和运行脚本?
- java - 我在将 java 转换为 kotlin 时遇到问题
- sql - 使用子查询从右表中获取最新记录
- c++ - 传递可变参数
- c++ - 将共享库与 CMake 链接时“没有这样的文件或目录”
- python-3.x - 如何使用 Python 接口隐藏类方法内容?
- java - 在项目 ':dolphin-music:dolphin-music-service' 中找不到任务 'nativeImage'
- python - ValueError: X 每个样本有 94698 个特征;期待 94686