Easymock,从模拟中返回模拟

时间:2011-12-13 13:53:29

标签: easymock

我有一个方法

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做这类事吗?

1 个答案:

答案 0 :(得分:1)

您不应该包含以下这一行:garage.setCarService(mockService);

您所需要的只是您对mockService.getCarService()的期望,您已经完成了。

因此,当您通过调用g.myNewMethod运行测试时,当myNewMethod命中getCarService()方法时,它将返回您的mockService。

但是你错过了调用getCar方法的期望。你需要:

expect(mockServce.getCar("ford")).andReturn(carMock);