I am testing the REST layer of my reactive SpringBoot (3) app and using Spring's WebTestClient:
@ExtendWith(SpringExtension.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)@ContextConfiguration(classes = ReferenceDataApplication.class)public class RefDataResourceTest { @Autowired private WebTestClient webTestClient; @BeforeEach void setup() { webTestClient = WebTestClient.bindToController(new RefDataResource()).build(); } @Test public void shouldGetReferenceDataByTypeCode() { webTestClient .get() .uri("/api/projects/refData/findByCode") .exchange() .expectStatus().isOk(); }}
I defined /api/projects/ as base-path in Spring, and my resource implements the delegate generated by OpenApi generation of the yaml contract:
@Componentpublic class RefDataResource implements RefDataApiDelegate { @Override public Mono<ResponseEntity<Flux<RefDataElementDTO>>> findDataByCode(String code, ServerWebExchange exchange) { return Mono.just(ResponseEntity.ok().build()); }}
When I run the SpringBoot application, I can use Postman to hit the endpoint and I can get the expected 200, however when I use the WebTestClient above I keep getting 404. What am I doing wrong here?