[英]Mock a public method using Jmockit
我有一個Handler.java類
它有2個公共方法update(),fetch()
在實際的update()實現中,我調用了公共方法fetch()
fetch()依次調用服務。
所以現在我必須編寫一個testUpdate()來模擬公共方法調用,即fetch()
由於它不是靜態的,因此我嘗試創建另一個Handler.java實例作為模擬對象,例如,
private Handler handler;
@Mocked
private Handler mockedHandler;
現在使用嘲笑的處理程序,我在testUpdate()中設置以下代碼
new NonStrictExpectations(){
mockedHandler.fetch();
returns(response);
};
handler.update();
現在,我希望可以使用嘲笑的處理程序來調用fetch(),並使用處理程序實例來調用update()。
但是當我運行實際的方法時,對update()的調用也會被模擬!!!
i.e. handler.update(); is not at all going to the update().
幫我模擬在update()中調用的第二個公共方法
謝謝
在我看來,您應該模擬從Handler#fetch()
內部調用的服務類,而不是模擬fetch()
方法。
無論如何,模擬類的某些方法而不模擬其他方法稱為部分模擬 。 在JMockit中,通常將NonStrictExpectations(Object...)
使用NonStrictExpectations(Object...)
構造函數,如以下示例測試中所示:
@Test
public void handlerFetchesSomethingOnUpdate()
{
final Handler handler = new Handler();
new NonStrictExpectations(handler) {{
handler.fetch(); result = response;
}};
handler.update();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.