gpt4 book ai didi

java - 模拟 java8 stream.map

转载 作者:行者123 更新时间:2023-11-30 08:01:45 26 4
gpt4 key购买 nike

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

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

@Mock Stream<String> stringStream;
@Mock Stream<String> upperCaseStream;

when(stringStream.map(String::toUpperCase)).thenReturn(upperCaseStream);
syso(stringStream.map(String::toUpperCase));

这会打印出 null。

我正在寻找一种正确的模拟方式,它会在输出中返回“upperCaseStream”。

最佳答案

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

我不太了解 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")

关于java - 模拟 java8 stream.map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com