Застряв в покрытии одного сложного фрагмента кода тестом, просто посмотрите на метод:
public Flux<Foo> collect(FooQuery query, Integer elementsCount) {
var foosFlux = fooRepository.findByFooQuery(query)
.cache();
return foosFlux.concatWith(foosFlux.count()
.map(Long::intValue)
.map(count -> count + elementsCount)
.filter(count -> count < MAX_EXPORT_FOOS) // constant MAX_EXPORT_FOOS = 100000
.flatMapMany(count -> collect(query.withDate(query.getDate().plusDays(1)), count)));
}
Как я могу покрыть сценарий тестом, когда MAX_EXPORT_FOOS достигнет?
Тест:
@Test
public void testCollect() {
var query = fooQuery();
new Expectations() {{
fooRepository.findByFooQuery(query);
result = Flux.just(....); // Here I need to have more that 100000 Foos
}};
StepVerifier.create(subject.export(query))
.expectNext(...) // Here I should expect <= 100000 Foos, just because after collect(...) method I call take(MAX_EXPORT_FOOS) method
.verifyComplete();
}