[英]Mocking java8 stream.map
我正在使用Mockito我该如何模拟stream.map()调用。
我尝试了类似这样的返回空值。
@Mock Stream<String> stringStream;
@Mock Stream<String> upperCaseStream;
when(stringStream.map(String::toUpperCase)).thenReturn(upperCaseStream);
syso(stringStream.map(String::toUpperCase));
此打印为空。
我正在寻找一种正确的模拟方法,该方法将在输出中返回“ upperCaseStream”。
请记住,即使调用看起来相同,也不保证方法引用或lambda的标识相同。 看一下这个
我对Mockito不太了解,但是我相信它会检查是否存在一个值, when
注册时,这可能会调用对equals的调用,而该调用不保证在此处无法正常工作。 例如:
Function<String, String> fn1 = String::toUpperCase;
Function<String, String> fn2 = String::toUpperCase;
System.out.println(fn1.equals(fn2)); // false on my machine
您可以简单地将引用存储在变量中,以后再使用
Function<String, String> toUpperCase = String::toUpperCase;
when(stringStream.map(toUpperCase)).thenReturn(upperCaseStream);
System.out.println(stringStream.map(toUpperCase));
顺便说一句,我真的不明白为什么需要模拟Stream<String>
,在那里您可以简单地执行Stream.of("foo","bar")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.