所以我想打印一些字符串。当我这样做时:
MyClass myClass = new MyClass();
myClass.myFunction(myList, path);
它告诉我:
somepath/ABC
somepath/DEF
somepath/PQR
但是当我这样做时:
MyClass myClass = mock(MyClass.class);
myClass.myFunction(myList, path);
它没有向我展示任何东西。是否可以在模拟对象上返回这些字符串?
答案 0 :(得分:2)
由于您使用模拟对象,您可以模拟其myFunction
方法的行为,如下所示:
when(myClass.myFunction()).thenReturn("somepath/ABC");
请注意,只有当方法的返回类型为String
时才会编译。
如果方法return-type是void
,那么你不应该模拟返回值,而应该调用 real 方法:
Mockito.doCallRealMethod().when(myClass).myFunction();
将执行原始方法实现中的println
语句。但是这种方法存在一些缺陷 - 如果方法使用某些类成员,则有可能获得NullPointerException
(或其他例外),对于模拟的类成员null
对象,除非您将它们设置为引用其他模拟对象。
答案 1 :(得分:1)
在mock对象上调用特定方法时,可以使用下面的代码返回一些内容:
when(myClass.myFunction()).thenReturn("somepath/ABC");