2011-12-13 74 views
2

返回一個模擬我有一個方法EasyMock的,由AA模擬

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

您不應該包含此行:garage.setCarService(mockService);

所有你需要的是你所期望的mockService.getCarService()被調用,你已經完成了。

因此,當您通過調用g.myNewMethod來運行測試時,當myNewMethod命中getCarService()方法時,它將返回您的mockService。

然而,您仍然錯過了被調用getCar方法的期望。您需要:

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

謝謝,我會在聖誕節測試一下,看它是否有效 – AgS

相關問題