我无法通过应用程序界面访问Play2测试中的guice绑定实例。
使用Play2.5,假设一个应用程序使用Guice for DI,其Guice模块具有:
@Singleton
@Provides
protected MyThing<String, Foo, Bar> createMyThing() {
}
在使用WithApplication的junit Integration测试中,我使用标准的play2类执行此操作:
public class ApplicationTest extends WithApplication {
private Application playApp;
@Override
protected Application provideApplication() {
playApp = new GuiceApplicationBuilder().build();
}
@Test
public void testInject() {
playApp.injector().instanceOf(new BindingKey<>(MyThing.class));
}
}
失败
No implementation for MyThing was bound
即使在调试器中,我看到Guice注入器有一个绑定:
MyThing<String, Foo, Bar> -> instance
现在虽然有solutions for Guice itself,但我似乎无法直接访问这些,而Play DI抽象似乎无法指定泛型。
答案 0 :(得分:0)
这个黑客似乎通过要求播放器包装器返回绑定的Guice注入器来获取Guice Injector:
play.inject.Injector playInjector = playApp.injector();
com.google.inject.Injector guiceInjector = playInjector.instanceOf(com.google.inject.Injector.class);