Я думаю, вы можете использовать библиотеку MockWebServer. Я подготовил небольшую демонстрацию, чтобы проверить ваш метод. Конечно, для нескольких тестовых случаев вы можете поместить инициализацию MockWebServer в метод @BeforeAll
, а завершение работы в метод @AfterAll
.
class RestServiceTest {
@Test
@SneakyThrows
public void testSend() {
MockWebServer server = new MockWebServer();
// Schedule some responses.
server.enqueue(new MockResponse().setBody("hello, world!"));
// Start the server.
server.start();
String baseUrl = String.format("http://localhost:%s", server.getPort());
// initialize a WebClient with the base url of the mock server
final WebClient webClient = WebClient.builder().baseUrl(baseUrl).build();
// initialize our service class
final RestService restService = new RestService(webClient);
// send the request
final String sendResponse = restService.send().block();
// ASSERTIONS
assertNotNull(sendResponse);
assertEquals("hello, world!", sendResponse);
// get the recorded request data
RecordedRequest request = server.takeRequest();
assertEquals("testval", request.getBody().readUtf8());
assertEquals("POST", request.getMethod());
assertEquals("/test", request.getPath());
server.shutdown();
}
}
Чтобы использовать MockWebServer, вам понадобятся следующие зависимости.
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>4.0.1</version>
<scope>test</scope>
</dependency>