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