如何使用Junit和Mockito模拟toBuilder构造函数?
我有以下服务实现: ''' ''' 我一直在尝试创建一个Junit测试来覆盖这个方法,但我总是在同一点上被停止,return->return contract.toBuilder().contractem(contractem.build() 当我运行测试时,我发现了这个问题 java.lang.NullPointerException 位于com.bionexo.dataloader.service.impl.ContractServiceImpl.createContract(ContractServiceImpl.java:65) 我相信这里的问题是,我无法模拟toBuilder构造函数,因此方法的行出现了问题。这是我的测试: ''' '''如何使用Junit和Mockito模拟toBuilder构造函数?,junit,mocking,Junit,Mocking,我有以下服务实现: ''' ''' 我一直在尝试创建一个Junit测试来覆盖这个方法,但我总是在同一点上被停止,return->return contract.toBuilder().contractem(contractem.build() 当我运行测试时,我发现了这个问题 java.lang.NullPointerException 位于com.bionexo.dataloader.service.impl.ContractServiceImpl.createContract(Contrac
@Transactional
@Override
public Contract createContract(ContractResource resource) {
Integer companyId = companyService.getUserCompanyIdBy(resource.getUserId());
Contract contract = Contract.builder()
.contractTitle("Contrato Criado pela Api Data-Loader")
.userId(resource.getUserId())
.companyId(companyId)
.supplierId(resource.getSupplierId())
.minRevenue(CONTRACT_MINIMUM_REVENUE)
.deliveryTime(CONTRACT_DELIVERY_TIME)
.contractType(resource.getContractType())
.initialDate(resource.getInitialDate())
.finalDate(resource.getFinalDate())
.build();
checkContractTypeIsNoValidityOrByQuantity(contract);
supplierServiceImpl.checkSupplierIdExists(contract.getSupplierId());
contract = repository.createContract(contract);
ContractItemResource contractItemResource = ContractItemResource.builder()
.contractId(contract.getContractId())
.randomItem(resource.getContractItem().isRandomItem())
.code(resource.getContractItem().getCode())
.quantity(resource.getContractItem().getQuantity())
.build();
ContractItem contractItem = addItemToContract(contractItemResource);
return contract.toBuilder().contractItem(contractItem).build();
}
when(companyService.getUserCompanyIdBy(USER_ID)).thenReturn(COMPANY_ID);
when(contractResource.getUserId()).thenReturn(USER_ID);
when(contractResource.getSupplierId()).thenReturn(SUPPLIER_ID);
when(contractResource.getContractType()).thenReturn(CONTRACT_TYPE);
when(contractResource.getInitialDate()).thenReturn(null);
when(contractResource.getFinalDate()).thenReturn(null);
doNothing().when(supplierServiceImpl).checkSupplierIdExists(SUPPLIER_ID);
when(contractItemResource.isRandomItem()).thenReturn(FALSE_RANDOM_ITEM);
when(contractItemResource.getCode()).thenReturn(CONTRACT_ITEM_CODE);
when(contractItemResource.getQuantity()).thenReturn(CONTRACT_ITEM_QTD);
when(contractResource.getContractItem()).thenReturn(contractItemResource);
when(contractRepository.createContract(contractCaptor.capture())).thenReturn(contract);
Contract result = contractService.createContract(contractResource);
Contract value = contractCaptor.getValue();
assertThat(result).isEqualTo(contractFinal);
assertThat(value.getUserId()).isEqualTo(USER_ID);
verify(contractRepository).createContract(contractCaptor.capture());
verify(contractRepository).addItemToContract(contractItemCaptor.capture());