模拟java8 stream.map

时间:2016-05-19 22:23:21

标签: java unit-testing mocking java-8 mockito

我正在使用mockito如何模拟stream.map()调用。

我试过这样的东西,返回null。

$_POST['submit']

这打印为空。

我正在寻找一种正确的嘲讽方法,它会返回' upperCaseStream'在输出中。

1 个答案:

答案 0 :(得分:3)

请记住,即使调用看起来相同,方法引用或lambdas的标识也不保证相同。 Check this out

我对Mockito不是很了解,但我相信它会检查是否存在when注册的值,这可能会调用等于某处无法保证在此工作的等号。例如:

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")