Easymock, возвращая макет из макета - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть метод

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 как ноль. Можете ли вы делать такие вещи с easyMock?

1 Ответ

1 голос
/ 16 декабря 2011

Вы не должны включать эту строку: garage.setCarService(mockService);.

Все, что вам нужно, - это ожидание вызова mockService.getCarService (), что вы и сделали.

Итак, когда вы запустите свой тест, вызвав g.myNewMethod, когда myNewMethod попадет в метод getCarService (), он вернет ваш mockService.

Однако вам не хватает ожидания вызова метода getCar. Вам нужно:

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