如何在没有@Default限定符的情况下绑定类的实例

时间:2018-06-22 20:22:15

标签: java junit5 jboss-weld

在测试中,我使用的是焊缝焊接,而不是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);
    }
}

1 个答案:

答案 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类进行依赖项注入。