繁体   English   中英

为什么在嘲讽对象上使用的方法不显示println?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM