Jav*_*per 2 unit-testing exception mockito java-8 java-stream
我想测试一种返回流的方法。
class Foo {
public void getClicks(boolean somecondition) {
Stream s1 = computeAndGetAllClicks(new Date());
if (somecondition) {
Stream s2 = computeAndGetAllClicks(new Date());
}
return Stream.concat(s1, s2);
}
Stream computeAndGetAllClicks(Date d) {
// return stream
}
}
Run Code Online (Sandbox Code Playgroud)
现在我已经为 somecondition = true 的情况编写了以下测试
final ArgumentCaptor<Date> argumentCaptorTodayDate = ArgumentCaptor.forClass(Date.class);
doReturn(Arrays.asList(new Click.Builder().build()).stream())
.when(fooInstance)
.addAtlasLineItem(computeAndGetAllClicks(argumentCaptorTodayDate.capture))
final ArgumentCaptor<Date> argumentCaptorEndDate = ArgumentCaptor.forClass(Date.class);
doReturn(Arrays.asList(new Click.Builder().build()).stream())
.when(fooInstance)
.addAtlasLineItem(computeAndGetAllClicks(argumentCaptorEndDate.capture))
fooInstance.getClicks(true);
Run Code Online (Sandbox Code Playgroud)
但是我得到异常: java.lang.IllegalStateException:流已被操作或关闭。
我该如何解决它?
您可以使用 thenAnswer 并在每次调用时创建新流:
doAnswer(invocationOnMock->Arrays.asList(new Click.Builder().build()).stream())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |