【发布时间】:2019-05-05 23:18:22
【问题描述】:
目前有包含内部映射器的映射器(有时,它们本身包含其他内部映射器)。
它们的定义如下:
@Mapper(componentModel = "cdi", uses = B.class)
public interface A {
ADto toDto(AEntity entity);
}
@Mapper(componentModel = "cdi")
public interface B {
BDto toDto(BEntity entity);
}
当应用程序运行时,我可以简单地注入主 Mapper A 而不会出现任何问题,实体就会被转换。
但是,通过 JUnit,我似乎无法弄清楚如何实例化内部映射器。
public class InformationChassisMapperTest {
@InjectMocks
public A mapper = new AImpl();
public AEntity;
@Before
public void init() {
AEntity = new AEntity();
// fill entity...
}
@Test
public void test() {
ADto = mapper.toDto(AEntity);
// asserts...
}
}
我得到一个 NPE,因为内部映射器 B 在映射期间没有实例化。由于生成的 A 映射器类使用 @Inject B,因此在我的 JUnit 测试期间,CDI bean 映射已关闭(没有 arquillian)。我如何模拟或注入或实例化第二个映射器以使我的测试通过?
我查看了其他答案,但它们仅涵盖 Spring。
【问题讨论】: