Тестирование контроллера MVC с использованием реактора с WebClient - PullRequest
0 голосов
/ 15 ноября 2018
@RestController
@RequestMapping("/api/v1/platform")
public class PlatformController {

  @Autowired
  private PlatformRepository platformRepository;


  @GetMapping
  public Flux<Platform> findAll() {
    log.info("Calling findAll platforms");
    return platformRepository.findAll();
  }
}


@RunWith(SpringRunner.class)
@WebFluxTest
public class PlatformControllerTest {

  @MockBean
  private PlatformRepository platformRepository;


  @Test
  public void findAll() throws Exception {
    WebTestClient client = WebTestClient.bindToController(new PlatformController()).build();
    client.get()
        .uri("/api/v1/platform")
        .exchange()
        .expectStatus().isOk();
  }

}

Выше я приложил простой POC, чего я хочу достичь. Я не могу ввести макет в контроллер для своих тестов, и тесты не пройдены. Есть ли другой способ сделать это или я пропускаю фундаментальную концепцию?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Все заработало после того, как я добавил класс контроллера в конфигурацию контекста.

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {
    PlatformController.class,
    MongoTestConfig.class
})
@WebFluxTest(PlatformController.class)

Я думаю, что это может быть ошибкой, поскольку контроллер должен быть в контексте после включения в аннотацию WebFluxTest.

0 голосов
/ 15 ноября 2018

Из документов :

@ WebFluxTest автоматически настраивает инфраструктуру Spring WebFlux и ограничивает сканируемые bean-компоненты до @Controller, @ControllerAdvice, @JsonComponent, Converter, GenericConverter иWebFluxConfigurer. Обычные компоненты @Component не сканируются при использовании аннотации @WebFluxTest.

Не могли бы вы попытаться добавить свой класс контроллера в аннотацию WebFluxTest?

@WebFluxTest(PlatformController.class)
...