簡體   English   中英

替換非靜態方法java mock

[英]replace non static method java mock

我需要模擬一個對象的公共非靜態方法。

問題是我不能創建一個模擬對象,因為這個對象是直接在代碼中創建的。

我嘗試使用PowerMockito.spy()和PowerMockito.when(...)來監視類,但是它不起作用(也許是因為PowerMockito.when僅適用於靜態和私有方法)

例如,假設我需要測試這個:

... myClass anObject = new myClass(); anObject.aMethod();
...

我如何模擬調用anObject.aMethod()?

我想我需要監視myClass,但它不起作用..

使用依賴注入。

在最簡單的情況下,只需將工廠對象傳遞給創建對象的方法,然后監視該工廠。

這樣做的另一種方法是將工廠傳遞給對象的構造函數。

最好重構代碼以使用依賴注入。

但是一個快速的谷歌建議你實際上可以在PowerMockito中存根構造函數。 有關whenNew,請參見javadoc

我不能擔保它,因為我沒有使用過PowerMockito,但這看起來應該可以使您的構造函數調用返回一個模擬對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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