如何在覆盖中重新启用默认绑定
How to re-enable the default binding in an override
我有一个 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.
那么如何通过覆盖恢复到默认绑定?
刚刚在输入问题时找到了答案。解决方法是省略to
方法:
@Override
protected void configure() {
bind(ExternalSystemAccessor.class); // re-enable default binding
}
我有一个 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.
那么如何通过覆盖恢复到默认绑定?
刚刚在输入问题时找到了答案。解决方法是省略to
方法:
@Override
protected void configure() {
bind(ExternalSystemAccessor.class); // re-enable default binding
}