首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jUnit模拟ModelMapper

jUnit模拟ModelMapper
EN

Stack Overflow用户
提问于 2020-02-25 09:38:58
回答 1查看 1.4K关注 0票数 0

我正在尝试做一些UnitTest,我有一个像这样的方法;

代码语言:javascript
复制
public void processInitialBalances(RequestDTO requestDTO) {
    logger.info("At processInitialBalances");

    // Convert from DTO to Entity
    Balance balance = modelMapper.map(requestDTO.getInitialBalances(), Balance.class);

    balance.setId(DUMMY_ID);
    Type listType = new TypeToken<List<Issuer>>() {}.getType();
    List<Issuer> issuer = modelMapper.map(requestDTO.getInitialBalances().getIssuers(), listType, "issuer-list");

    if (!issuer.isEmpty()) {
        issuer.get(ibcConstants.ZERO).setId(DUMMY_ID);

    balance.setIssuer(issuer);

    // Save balance entity and childs (issuers)
    balance = balanceRepository.save(balance);

    logger.info("Leaving processInitialBalances");
}

我正在努力在UnitTest中通过这条线;

代码语言:javascript
复制
    Balance balance = modelMapper.map(requestDTO.getInitialBalances(), Balance.class);

    balance.setId(DUMMY_ID);
    Type listType = new TypeToken<List<Issuer>>() {}.getType();
    List<Issuer> issuer = modelMapper.map(requestDTO.getInitialBalances().getIssuers(), listType, "issuer-list");

因为当我运行classUnderTest.processInitialBalances(Dto)时;我在balance.setId(Id)行得到一个NPE;

我试着模拟modelMapper,但我得到了一个PotentiallyStubbingProblem,这是我的测试。

代码语言:javascript
复制
    @Test
    public void testBalanceCreated() throws ServiceException {
        RequestDTO requestDTO = new RequestDTO();
        BalanceDTO balanceDTO = new BalanceDTO();
        List<IssuerDTO> issuers = new ArrayList<>();
        IssuerDTO issuer = new IssuerDTO();

        issuer.setIssuerName("GBM");
        issuer.setSharePrice(10f);
        issuer.setTotalShares(100);
        issuers.add(issuer);

        balanceDTO.setCash(100f);
        balanceDTO.setIssuers(issuers);

        requestDTO.setInitialBalances(balanceDTO);

        when(modelMapper.map(null, null, null)).thenReturn(new Balance());
        when(modelMapper.map(null, null)).thenReturn(new ArrayList<Issuer>());

        cut.processInitialBalances(requestDTO);

        // Assert entities and repository call.
    }

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 09:53:59

代码语言:javascript
复制
when(modelMapper.map(isNull(), isNull(), isNull())).thenReturn(new Balance());
when(modelMapper.map(isNull(), isNull())).thenReturn(new ArrayList<Issuer>());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60386360

复制
相关文章

相似问题

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