簡體   English   中英

使用Jmockit模擬一個公共方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM