仅供参考,我正在使用Mockito和TestNg
我知道如何通过使用@Bind
模拟我的外部依赖关系来测试Guice模块中的逻辑。
这里有一个模块(例如Foo
),在install(new Bar());
方法中具有configure
。
我可以绑定Foo中的各种外部依赖关系,但是我不知道如何处理Bar中的事情。
ex)
public class FooTest {
@Bind
@Mock
SomeExternalDependency1 someExternalDependency1;
@Bind
@Mock
SomeExternalDependency2 someExternalDependency2;
@BeforeClass
public void setup() {
MockitoAnnotations.initiMocks(this);
injector = Guice.createInjector(Modules.override(new Foo())with(
new TestFooModule()), BoundFieldModule.of(this));
injector.injectMembers(this);
}
@Test
public void testSomething() {
//asssert something here
}
static class TestFooModule extends AbstractModule {
@Override
protected void configure() { }
}
但是当我运行此测试时,它抱怨Bar
中的外部依赖关系。
如何在不实例化Bar模块的情况下测试Foo模块?
对于未安装“子级”模块的模块,这种测试可以正常进行。
我需要bind
从TestFooModule
内部的Bar提供@。那解决了我的问题。