В настоящее время Mapper содержит внутренние Mappers (иногда они сами содержат другие внутренние Mappers).
Они определены следующим образом:
@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 mapper использует @Inject B, во время моих тестов JUnit отображение bean-компонента CDI отключено (нет arquillian).Как я мог издеваться, вводить или создавать экземпляр 2-го картографа, чтобы пройти тест?
Я посмотрел другие ответы, но они касаются только Spring.