在测试中,我使用的是焊缝焊接,而不是CDI。
如何注入以前创建的Class的实例?就像我在从AbstractBinder扩展的Binder中所做的那样。
我的测试班:
@EnableWeld
public class VersionProcessTest {
@WeldSetup
public WeldInitiator weld = WeldInitiator
.of(VersionProcess.class);
@Test
public void GetSolversVersion() throws DirectoryNotFoundException {
weld.event().select(FileService.class).fire(new FileService("workDir", "solverTest"));
String version = weld.select(VersionProcess.class).get().execute();
assertThat("should return version string", version, instanceOf(String.class));
}
}
我的活页夹:
public class TestBinder extends AbstractBinder {
@Override
protected void configure() {
bind(new FileService("test")).to(FileService.class);
bind(SolverVersionApiServiceImpl.class).to(SolverVersionApiService.class);
}
}
答案 0 :(得分:0)
所以我真正想要的是为我的注射课声明一个农产品。
为此,我添加了FileService的Produces声明(注入的类):
@RequestScoped
@Produces
FileService fileService = new FileService("workDir", "solverTest");
并更改WeldInitiator声明以设置包含@Produces批注的类,在我的例子中是TestClass,所以:
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(VersionProcess.class, VersionProcessTest.class).activate(RequestScoped.class).build();
请注意,它正在为VersionProcess类进行依赖项注入。