[英]Why method used at mockito object don't show println?
所以我想打印一些字符串。 當我做:
MyClass myClass = new MyClass();
myClass.myFunction(myList, path);
它顯示了我:
somepath/ABC
somepath/DEF
somepath/PQR
但是當我這樣做時:
MyClass myClass = mock(MyClass.class);
myClass.myFunction(myList, path);
它什么都沒顯示。 是否可以在模擬對象上返回這些字符串?
由於使用了模擬對象,因此可以模擬其myFunction
方法的行為,如下所示:
when(myClass.myFunction()).thenReturn("somepath/ABC");
請注意,僅當您的方法的返回類型為String
,此方法才會編譯。
如果您的方法return-type為void
,則您不應模擬返回值,而應調用真實方法:
Mockito.doCallRealMethod().when(myClass).myFunction();
它將在原始方法實現內執行println
語句。 但是,這種方法有一些陷阱-如果該方法使用某些類成員,則有可能獲得NullPointerException
(或其他異常),對於模擬對象,該成員將為null
,除非您將它們設置為引用其他模擬對象。
當在模擬對象上調用特定方法時,可以使用以下代碼返回一些信息:
when(myClass.myFunction()).thenReturn("somepath/ABC");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.