Как проверить реактивный метод в Rest Controller, вызванный из сервиса - PullRequest
0 голосов
/ 14 сентября 2018
The following is my rest controller code 

    @RequestMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE, value = "/myMethod")
        public Flux<Integer> myMethod() {       
            return service.myServiceMethod();
        }


My service method is   

      public Flux<Integer> myServiceMethod() {
                return Flux.fromStream(Stream.generate(() -> no++).map(s -> Integer.valueOf(s))).delayElements(Duration.ofSeconds(5));
            }

I am trying to write a test as below but it is not working

@Autowired
    NumberEventService serv; 

@Test
    public void test() {
      StepVerifier.withVirtualTime(() -> 
            Flux.just(serv.generateNumberEvent()).delayElements(Duration.ofSeconds(5)))
            .expectSubscription() //t == 0  
            .expectNoEvent(Duration.ofSeconds(1))   
            .expectNextCount(1) 
            .expectNoEvent(Duration.ofSeconds(1))
            .expectNextCount(1) 
            .expectNoEvent(Duration.ofSeconds(1))
            .expectNextCount(1) 
            .expectComplete()   
            .verify();
    }

Я получаю сообщение об ошибке:

java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: reactor/core/scheduler/TimedScheduler
    at reactor.test.StepVerifier.withVirtualTime(StepVerifier.java:167)
    at reactor.test.StepVerifier.withVirtualTime(StepVerifier.java:140)

Я запустил приложение в порту 8080 и провел тест.Какую ошибку я делаю?

Я запусту этот метод в 8080, и клиент в порту 8082 будет использовать событие.

Как это может быть проверено модулем?

1 Ответ

0 голосов
/ 21 сентября 2018

Вы столкнетесь с NoClassDefFoundError, когда версии reactor-core не совпадают между тем, что приносит пружина-стартер-реактор, и аддонами для испытания реактора.

Вы должны посмотреть на свои spring-boot-starter-webflux зависимости и найти версию модуля reactor-core.

Тогда вы сможете добавить правильную версию модуля reactor-test.

В моем примере текущая версия модуля reactor-core - 3.1.8.RELEASE, поэтому я должен добавить ту же версию модуля reactor-test.

Вы можете проверить репозиторий Maven репозитория для испытаний реактора здесь

enter image description here

...