单元测试Guice模块,其中一个模块安装了另一个模块

问题描述 投票:1回答:1

仅供参考,我正在使用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模块?

对于未安装“子级”模块的模块,这种测试可以正常进行。

java testng guice
1个回答
0
投票

我需要bindTestFooModule内部的Bar提供@。那解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.