スプリングフレームワーク5とスプリングブート2.0.0.M6を使用しており、リアクティブプログラミングにもWebClient
を使用しています。リアクティブレストエンドポイントのテストメソッドを作成したので、その方法の例を探しました。私は this oneまたは this を見つけましたが、他の多くのものはすべて同じです。それらは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.
そのため、自動構成が存在するようには見えません。間違ったバージョンを使用していますか、それともここでの問題は何ですか?
MyControllerTest
テストクラスに@AutoConfigureWebTestClient
アノテーションを付けます。これで問題が解決するはずです。
受け入れられた答えは私のためにそのエラーを投げ続けますが、代わりにSpring Boot 2.0.3のテストスターターに加えてwebfluxスターターを追加する必要がありました:
<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>
次に、標準のWebテストアノテーションを使用します。
@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();
}
}