Похоже, мой тест не ждет подписки — webflux, spock, StepVerifierJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Похоже, мой тест не ждет подписки — webflux, spock, StepVerifier

Сообщение Anonymous »

Я упростил свою задачу до этого псевдокода.
Мой контроллер

Код: Выделить всё

@RestController
@RequestMapping("api")
@RequiredArgsConstructor
public class TestController {
private final Service service;
@PostMapping("/test")
public Mono test(@RequestBody @Valid Flux testDtoFlux) {
return testDtoFlux
.map(service::test)
.then();
}
тест:

Код: Выделить всё

  void setup() {
service = Mock(Service)
controller = new TestController(service)
}

def "Should test abc"() {
setup:
def testDto = new TestDto(11L, true)

when:
def result = StepVerifier.create(controller.test(Flux.just(testDto)))

then:
result
.verifyComplete()

1 * service.test(_) >> true
}
test каждый раз говорит, что service.test никогда не выполняется, но когда я изменил код на что-то вроде этого, тест прошел:

Код: Выделить всё

  public Mono test(@RequestBody @Valid Flux testDtoFlux) {
testDtoFlux
.map(service::test)
.then().block();
return Mono.empty();
}
Я не понимаю, почему это происходит. Я пытался это исправить, например:

Код: Выделить всё

result
.expectSubscription()
.thenAwait(Duration.ofSeconds(5))
.expectComplete()
.verify();
но результат всегда один и тот же. Может быть, вы видите, что я делаю не так?
ps. Когда я запускаю приложение, все работает нормально. У меня проблема только с этим тестом.

Подробнее здесь: https://stackoverflow.com/questions/784 ... epverifier
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»