Я пытаюсь сделать несколько юнит-тестов, и у меня есть такой метод:
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");
}
Я изо всех сил пытаюсь пройти эту строку в юнит-тестах;
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); Я получаю NPE в строке balance.setId (id);
Я пытался смоделировать modelMapper, но я получил PotentiallyStubbingProblem, вот мой тест.
@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.
}
Любой совет будет оцените.