stream()方法不能与Mockito spy一起工作



下面代码:

 List<Object> list = spy(new LinkedList<>());
 list.stream().map(item -> item);

不工作,导致测试期间出现异常:

Cannot call real method on java interface. Interface does not have any implementation!
Calling real methods is only possible when mocking concrete classes.
  //correct example:
  when(mockOfConcreteClass.doStuff()).thenCallRealMethod();

然而,调用size()工作正常。stream()法有什么问题?我使用的是Mockito 1.8.4版本

java.util.List.stream()方法是java.util.Collection中的默认方法。早于1.10.5(可能是1.10.0)的Mockito版本无法处理默认方法(它缺少java.lang.reflect.Method.isDefault()检查,可能还有一些处理此类方法的间谍细节)。

我已经验证了它可以与Mockito 1.10.19一起工作,所以我建议在Java 8中编写代码时升级。

相关内容

  • 没有找到相关文章

最新更新