2016-12-23 27 views
-3

我嘲笑請求和使用easymock響應,但它仍然通過請求方法中的每一行並獲得異常。模擬方法仍然稱爲真正的方法

如:

public class helper{ 

public String getCB(){ 
    Response response = serviceImpl.getDefaultMethod(request); 
    return response.getString(); 
} 

測試:

expect(MockServiceImpl.getDefaultMethod(mockRequest)).andReturn(mockResponse); 

獲得一個例外,它的getDefaultMethod()裏面去。

我不明白爲什麼它會通過該方法中的代碼。誰能幫幫我嗎?

+1

請爲產品代碼和測試添加[MCVE](http://stackoverflow.com/help/mcve)s。 –

回答

0

AFAIK easymock無法模擬靜態方法調用。

你應該招行

Response response = ServiceImpl.getDefaultMethod(request); 

出來的方法和模擬request的。

另一種方法是使用PowerMock,但恕我直言,這是投降壞設計。

+0

getDefaultMethod不是靜態的 – user2514421

+0

*「getDefaultMethod不是靜態的」*但是您使用靜態訪問(在編輯之前和您的測試示例中仍然存在) –

0

如果該方法不是靜態的,也不是最終的,它應該起作用。

如果不是這樣,這意味着您不是在模擬上調用此方法,而是在類的實例上調用此方法。向我們展示模擬創建和注入將幫助我們確認。