Nik*_*las 9 configuration unit-testing bind inject guice
如何在一个大项目中测试Guice AbstractModule的实现而不创建虚假实现?是否可以测试bind()和inject()方法?
Dan*_*den 10
通常,测试Guice模块的最佳方法是在测试中创建一个注入器,并确保您可以从中获取您关心的键的实例.
要做到这一点而不会导致生产过程发生,您可能需要用其他模块替换一些模块.您可以使用Modules.override
有选择地覆盖单个绑定,但通常最好不要安装"生产"类型模块并使用伪造绑定.
自Guice 4.0以来,有一个助手类BoundFieldModule
可以帮助解决这个问题.我经常设置如下测试:
public final class MyModuleTest {
@Bind @Mock DatabaseConnection dbConnection;
@Bind @Mock SomeOtherDependency someOtherDependency;
@Inject Provider<MyThing> myThingProvider;
@Before public void setUp() {
MockitoAnnotations.initMocks(this);
Guice.createInjector(new MyModule(), BoundFieldModule.of(this))
.injectMembers(this);
}
@Test public void testCanInjectMyThing() {
myThingProvider.get();
}
}
Run Code Online (Sandbox Code Playgroud)
有关Guice wiki 的更多文档BoundFieldModule
.
归档时间: |
|
查看次数: |
5966 次 |
最近记录: |