当前位置: 首页 > 知识库问答 >
问题:

MapStruct Junit-用CDI注入内部映射器

孔梓
2023-03-14

当前有包含内部映射器的映射器(有时,它们本身包含其他内部映射器)。

@Mapper(componentModel = "cdi", uses = B.class)
public interface A {
    ADto toDto(AEntity entity);
}

@Mapper(componentModel = "cdi")
public interface B {
    BDto toDto(BEntity entity);
}
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...
    }
}

共有1个答案

蒋高杰
2023-03-14

我建议不要嘲弄Mapper,而是用CDI设置一个测试,它实际上可以正确地创建所有的Mapper(没有使用CDI的经验来建议解决方案)。

说到这里,您可以使用1.3中的映射器#injectionstrategy。您可以使用构造函数注入并在其中注入模拟。

 类似资料:
  • 基本上,我的项目是一场战争(MyProject),导入2罐,MyProject-Client和MyProjectJar-API 我的项目 MyProjectJar-API - 有一个接口 MyProject-Client -想要注入在MyProject上生成的ParametroService 我想知道是否可以将ParameterService(在MyProject上生成)注入MyProject客户

  • 问题内容: 当前,我正在使用PersistenceContext注入EntityManager。EM被完美注入。 现在,我尝试装饰Bean,然后突然没有注入em。我得到一个NullPointerException。 我知道EJB和CDI是2个完全不同的管理器,所以一个都不知道另一个。我期望@PersistenceContext是EJB注入点,而@Inject是CDI。我应该怎么做才能解决这个问题并

  • 我想使用构造函数注入,因为它使我的单元测试更安全,更容易编写:我不能忘记设置要注入的字段。CDI支持这一点,注释的javadoc表示:“对于没有其他构造函数的公共无参数构造函数,是可选的。这使注入器能够调用默认构造函数。” 我知道其他标准需要一个无参数的构造函数(例如JAX-RS;参见这个问题),这是一个令人沮丧的问题。但即使对于像这样的简单类:

  • 到底是怎么回事? 提前谢了。

  • 我们使用的是Spring Boot2。 我们想使用Spring Boot的刷新机制,但是由于一个bug我们不能使用,因此我们不得不用和替换所有这些。 所以我们用了: 例如,使用该YAML文件: null 但是我们不能使用其他类型的属性绑定,因为我们正在将这个应用程序部署到kubernetes中,并使用kubernetes的配置映射。 所以我们想知道,是否还有其他机会让与一起工作