我有一个安装子模块的根模块。例如:
public class RootModule extends AbstractModule {
@Override
protected void configure() {
install(new ChildModule());
}
}
public class ChildModule extends AbstractModule {
@Override
protected void configure() {
}
@Provides
@Singleton
public Bar getBar(@Named("FooImpl") Foo foo) {
return BarBuilder.withFoo(foo).build();
}
}
我能够通过将其所需的依赖项 (Foo.class) 与 Mock 绑定(bind)并测试行为来创建注入(inject)器来测试 ChildModule。
要测试根模块,我是否应该显式传递自根模块安装 ChildModule 以来 ChildModule 使用的所有依赖项,或者是否有使用 Mock 覆盖已安装的 ChildModule 的变通方法?
最佳答案
您可以使子 Module
(s) 成为 RootModule
的实例变量。然后,您可以在测试时将模拟的 Module
传递到 RootModule
的构造函数中。
例如,带有子项的通用根模块可能如下所示:
public class RootModule extends AbstractModule {
private List<Module> childModules;
public RootModule(List<Module> childModules) {
this.childModules = childModules;
}
@Override
protected void configure() {
for (Module childModule : childModules) {
install(childModule);
}
}
}
关于java - 如何测试根级 Guice 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049443/