使用Mockito进行单元测试时为空指针

问题描述 投票:0回答:2

我正在为我的应用程序创建Spring Boot API。我正在尝试使用Mockito对服务实现进行单元测试以模拟出细节。该服务将向数据库添加一个新的建筑实体。以下是服务实现和测试实现。建筑服务:

@Slf4j
@Service
public class BuildingServiceImpl implements BuildingService {

private BuildingRepository buildingRepository;
private BuildingRequestToEntityMapper buildingRequestToEntityMapper;

public BuildingServiceImpl(BuildingRepository buildingRepository, BuildingRequestToEntityMapper 
buildingRequestToEntityMapper){
this.buildingRepository=buildingRepository;
this.buildingRequestToEntityMapper=buildingRequestToEntityMapper;
}

public HttpStatus addBuilding(BuildingRequest buildingRequest){
    log.info("Inside addBuilding() service");
    BuildingEntity buildingEntity = buildingRequestToEntityMapper.map(buildingRequest);
    buildingRepository.save(buildingEntity);
    log.info("Building saved "+ buildingEntity);
    return HttpStatus.CREATED;
}

BuildingServiceImpl_UT

@RunWith(MockitoJUnitRunner.class)
public class BuildingServiceImpl_UT {

@Mock
BuildingRequestToEntityMapper buildingRequestToEntityMapper;

@Mock
BuildingRepository buildingRepository;

@InjectMocks
BuildingServiceImpl buildingServiceImpl;

@Test
public void buildingService_MapsRequest_AndSaveEntity(){
BuildingRequest buildingRequest = BuildingRequest.builder()
            .name("TestName")
            .telephone("4444444444")
            .postcode("TEst")
            .address("testAddress").build();

   when(buildingServiceImpl.addBuilding(any(BuildingRequest.class))).thenReturn(HttpStatus.CREATED);
    when(buildingRepository.save(any(BuildingEntity.class))).thenReturn(new BuildingEntity());

    buildingServiceImpl.addBuilding(buildingRequest);
    verify(buildingRepository, times(1)).save(any());
}

我已经模拟了映射器和存储库,并将它们注入到服务中,但是当我运行测试时,在测试类的第一个when()。thenReturn()语句中得到了空指针异常。请帮忙。谢谢

java spring-boot junit mockito
2个回答
0
投票

此:


0
投票

我不明白您的第一个when()。thenReturn()!您尝试在buildingServiceImpl

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.