我试图用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框架。我嘲笑了工厂类返回的类SomeCarFactory
和CarService
类。
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
方法进行单元测试?