gpt4 book ai didi

unit-testing - 如何测试 Guice AbstractModule 的实现?

转载 作者:行者123 更新时间:2023-12-04 03:51:19 25 4
gpt4 key购买 nike

如何在一个大项目中测试 Guice AbstractModule 的实现而不创建假实现?是否可以测试 bind() 和 inject() 方法?

最佳答案

通常,测试 Guice 模块的最佳方法是在您的测试中创建一个注入(inject)器,并确保您可以从中获取您关心的 key 实例。

要做到这一点而不导致生产问题发生,您可能需要用其他模块替换一些模块。您可以使用 Modules.override选择性地覆盖单个绑定(bind),但通常最好不要安装“生产”类型的模块,而是使用伪造的绑定(bind)。

从 Guice 4.0 开始,有一个助手类 BoundFieldModule 这可以帮助解决这个问题。我经常设置测试,例如:

public final class MyModuleTest {
@Bind @Mock DatabaseConnection dbConnection;
@Bind @Mock SomeOtherDependency someOtherDependency;

@Inject Provider<MyThing> myThingProvider;

@Before public void setUp() {
MockitoAnnotations.initMocks(this);
Guice.createInjector(new MyModule(), BoundFieldModule.of(this))
.injectMembers(this);
}

@Test public void testCanInjectMyThing() {
myThingProvider.get();
}
}

还有更多 documentation for BoundFieldModule 在 Guice 维基上。

关于unit-testing - 如何测试 Guice AbstractModule 的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com