我有一个方法
class Garage{
public Noise myMethod(){
Car mycar = getCarService().getCar("ford");
Noise brum = mycar.drive();
return brum;
}
...
}
我想要模拟服务和汽车,所以我创建了一个像这样的模拟
MyCarService carMock = createMock(Car.class)
MyCarService mockServce = createMock(MyCarService.class)
expect(mockService.getCarService().andReturn(carMock));
expect(carMock.drive().andReturn("brummmm"));
replayAll();
Garage garage = new Garage();
garage.setCarService(mockService);
Noise n = g.myMethod();
然而,当我运行代码时,mycar始终从mockservice返回为null。你能用easyMock做这类事吗?
答案 0 :(得分:1)
您不应该包含以下这一行:garage.setCarService(mockService);
。
您所需要的只是您对mockService.getCarService()的期望,您已经完成了。
因此,当您通过调用g.myNewMethod运行测试时,当myNewMethod命中getCarService()方法时,它将返回您的mockService。
但是你错过了调用getCar方法的期望。你需要:
expect(mockServce.getCar("ford")).andReturn(carMock);