我最近开始使用Java Stream编写一个用户服务,该服务返回一组用户流。利用该用户流,我可以处理其他逻辑。
以下是涉及到流的代码片段,它可以正常工作:
try (Stream<User> users = userService.getStream()) {
users.forEach(user -> {
});
但是当我开始编写 JUnit 时,它会出现以下错误消息。
java.lang.IllegalStateException: stream has already been operated upon or closed
at java.util.stream.AbstractPipeline.sourceStageSpliterator(AbstractPipeline.java:279)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
at com.test.UserService.sendBulkNotification(UserService.java:47)
at com.test.UserServiceTest.sendNotificationTest(UserServiceTest.java:64)
这是我的单元测试代码:
List<User> users = new ArrayList<>();
for(long i = 1; i <= 5; i++) {
User user = new User();
user.setId(i);
users.add(user);
}
when(userService.getStream()).thenReturn(users.stream());
userService.sendNotification("user", 1, "test.com");
你能帮我编写关于流的测试用例/帮我解决这个问题吗?