首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法用嵌套的Mapper对Mapstruct进行单元测试?

有没有办法用嵌套的Mapper对Mapstruct进行单元测试?
EN

Stack Overflow用户
提问于 2021-12-23 12:01:33
回答 1查看 568关注 0票数 2

我试图按以下方式对Mapstruct嵌套映射程序进行单元测试:

代码语言:javascript
运行
复制
@Mapper(componentModel = "spring", uses = EventCategoryMapper.class, injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public interface EventMapper {

    
    Event fromEventMO(EventMO eventMO);

    EventMO toEventMO(Event event);

    default Optional<Event> fromOptionalEventMO(Optional<EventMO> optionalEventMO) {
        
        return (optionalEventMO.isEmpty()) ? Optional.empty() : Optional.of(fromEventMO(optionalEventMO.get()));
        
    }
    
}
代码语言:javascript
运行
复制
@Mapper(componentModel = "spring", injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public interface EventCategoryMapper {

    
    EventCategory fromEventCategoryMO(EventCategoryMO eventCategoryMO);

    EventCategoryMO toEventCategoryMO(EventCategory eventCategory);

    default String fromPriorityMO(PriorityMO priority) {
        return (priority.getPriority()==null) ? null : priority.getPriority();
    }

我正在试着测试EventMapper:

代码语言:javascript
运行
复制
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {EventMapper.class, EventCategoryMapper.class, EventMapperImpl.class, EventCategoryMapperImpl.class})
public class EventMapperTest {

    private Mocks mocks; //This object contains the mocked objects that should be mapped.

    @Autowired
    private EventMapper eventMapper;

    @Test
    @DisplayName("Should return an Event from an EventMO")
    void shouldReturnEventfromEventMO() {
        
        var event = eventMapper.fromEventMO(mocks.getEventMO());

        assertEquals(event.getId(), 123L);


    }

但它仍然失败,因为:

创建名为‘eventMapper’的bean时出错:实例化bean失败;嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化com.mycompany.cna.projects.fishmarket.back.events.repositories.mappers.event.EventMapper:指定的类是接口

我已经尝试过用Mapper.getMapper(EventMapper.class)实例化映射器,它返回了一个NullPointerException。

我应该怎么做才能在这种映射器上实现单元测试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-23 15:59:15

我已经解决了这个问题。问题是我没有实例化我的Mocks对象。我还在a方法中向EventMapperImpl提供了嵌套映射程序的模拟:

代码语言:javascript
运行
复制
    @ExtendWith(SpringExtension.class)
public class EventMapperTest {

    private Mocks mocks;

    private EventMapper eventMapper;

    @Mock
    private EventCategoryMapper eventCategoryMapper;

    @BeforeEach
    void before() {
        eventMapper = new EventMapperImpl(eventCategoryMapper);
        mocks = new Mocks();
    }
    
    @Test
    @DisplayName("Should return an Event from an EventMO")
    void shouldReturnEventfromEventMO() {

        when(eventCategoryMapper.fromEventCategoryMO(any(EventCategoryMO.class))).thenReturn(mocks.getEventCategory());
        var event = eventMapper.fromEventMO(mocks.getEventMO());

        assertEquals(event.getId(), 123L);


    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70461891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档