Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Junit和Mockito模拟toBuilder构造函数?_Junit_Mocking - Fatal编程技术网

如何使用Junit和Mockito模拟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

我有以下服务实现:

'''

'''

我一直在尝试创建一个Junit测试来覆盖这个方法,但我总是在同一点上被停止,return->return contract.toBuilder().contractem(contractem.build()

当我运行测试时,我发现了这个问题

java.lang.NullPointerException 位于com.bionexo.dataloader.service.impl.ContractServiceImpl.createContract(ContractServiceImpl.java:65)

我相信这里的问题是,我无法模拟toBuilder构造函数,因此方法的行出现了问题。这是我的测试:

'''

'''

@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());