Тестовый пример покрытия, когда ожидаются тысячи созданных объектов - PullRequest
0 голосов
/ 23 сентября 2019

Застряв в покрытии одного сложного фрагмента кода тестом, просто посмотрите на метод:

   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();
    }
...