无法为此类方法编写单元测试

时间:2018-03-02 16:54:47

标签: java junit mocking mockito junit4

我试图用junit测试一个非常简单的方法。像这样:

private SomeCarFactory someCarFactory;
private Predicate<CarRequest> isCarColorRed = carRequest -> carRequest.getCarColor() == CarTypeEnum.RED;
public List<CarResponse> post(Set<CarRequest> newCarsSet){
    // Filter the cars based on their car colors
    List<CarResponse> carResponseList = someCarFactory.getCarService(CarTypeEnum.RED).execute(filterCarsBasedOnCarType(newCarsSet, isCarColorRed));
    return carResponseList;
}

private Set<CarRequest> filterCarsBasedOnCarType(Set<CarRequest> newCarsSet, Predicate<CarRequest> predicate) {
    return newCarsSet.stream().filter(predicate).collect(Collectors.toSet());
}

我正在使用Junit4和Mockito框架。我嘲笑了工厂类返回的类SomeCarFactoryCarService类。

Set<CarRequest> redCarSet = createTestRedCars();
Set<CarRequest> blueCarSet = createTestBlueCars();
Set<CarRequest> carRequestSet = new HashSet<>();
carRequestSet.addAll(redCarSet);     
carRequestSet.addAll(blueCarSet);
Mockito.when(someCarFactory.getCarService(CarTypeEnum.RED)).thenReturn(carService);
Mockito.when(carService.execute(redCarSet)).thenReturn(someRedCarResponse);

上述内容显然不起作用,因为上面redCarSet Object中使用的when与调用方法filterCarsBasedOnCarType时创建的对象不同。

如何对post方法进行单元测试?

0 个答案:

没有答案
相关问题