Cant autowire 'WebTestClient' - нет автоматической настройки
мы используем spring framework 5 и spring boot 2.0.0.M6 и мы также используем WebClient
для реактивного программирования. Мы создали методы тестирования для наших конечных точек реактивного отдыха, и поэтому я искал пример того, как это сделать. Я нашел этой одна или этой и многих других, где все то же самое. Они просто autowire a WebTestClient
. Поэтому я попробовал то же самое:
@Log
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class MyControllerTest {
@Autowired
private WebTestClient webClient;
@Test
public void getItems() throws Exception {
log.info("Test: '/items/get'");
Parameters params = new Parameters("#s23lkjslökjh12", "2015-09-20/2015-09-27");
this.webClient.post().uri("/items/get")
.accept(MediaType.APPLICATION_STREAM_JSON)
.contentType(MediaType.APPLICATION_STREAM_JSON)
.body(BodyInserters.fromPublisher(Mono.just(params), Parameters.class))
.exchange()
.expectStatus().isOk()
.expectHeader().contentType(MediaType.APPLICATION_STREAM_JSON)
.expectBody(Basket.class);
}
}
Я не могу запустить потому что я получаю ошибку:
Could not autowire. No beans of 'WebTestClient' type found.
так это не кажется, что существует автоматическая конфигурация. Я использую неправильную версию или в чем дело?
2 ответов
аннотации MyControllerTest
тест класс @AutoConfigureWebTestClient
Примечание. Это должно решить проблему.
принятый ответ будет продолжать бросать эту ошибку для меня, вместо этого мне пришлось добавить стартер webflux помимо тестового стартера в Spring Boot 2.0.3:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
затем используйте стандартные аннотации веб-теста:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class IntegrationTest {
@Autowired
private WebTestClient webClient;
@Test
public void test() {
this.webClient.get().uri("/ui/hello.xhtml")
.exchange().expectStatus().isOk();
}
}