我有一个TestModule
为我的单元测试做了几个绑定,例如它用存根替换外部系统的访问器类:
bind(ExternalSystemAccessor.class).to(ExternalSystemAccessorStub.class).in(Singleton.class);
现在我的一个测试需要使用高效的实现,所以我尝试使用覆盖将其绑定回默认值:
injector = Guice.createInjector(Modules.override(new TestModule()).with(new AbstractModule() {
@Override
protected void configure() {
bind(ExternalSystemAccessor.class).to(ExternalSystemAccessor.class);
}
}));
但是,这会导致Guice错误:
com.google.inject.CreationException: Guice creation errors:
1) Binding points to itself.
那么如何通过覆盖返回默认绑定?
答案 0 :(得分:0)
在输入问题时找到答案。解决方案是省略to
方法:
@Override
protected void configure() {
bind(ExternalSystemAccessor.class); // re-enable default binding
}