Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringWebClient中验证请求url?_Java_Spring_Spring Boot_Junit_Spring Boot Test - Fatal编程技术网

Java 如何在SpringWebClient中验证请求url?

Java 如何在SpringWebClient中验证请求url?,java,spring,spring-boot,junit,spring-boot-test,Java,Spring,Spring Boot,Junit,Spring Boot Test,我有一个WebClient,希望验证WebClient发送的url和有效负载。但是如何在junit集成测试中访问它呢?意思是:我如何记录它们 @Service public class RestService { @Autowired private WebClient web; public Mono<String> send() { web.post().uri("/test").bodyValue("testval").retrieve(

我有一个
WebClient
,希望验证WebClient发送的
url
有效负载。但是如何在
junit
集成测试中访问它呢?意思是:我如何记录它们

@Service
public class RestService {
    @Autowired
    private WebClient web;

    public Mono<String> send() {
       web.post().uri("/test").bodyValue("testval").retrieve().bodyToMono(String.class);
    }
}

@SpringBootTest
public class RestServiceITest {
   @Autowired
   private RestService service;

   @Test
   public void testUrl() { 
      service.send();

      //TODO how to validate the request uri + body the the webClient received?
   }
}
@服务
公共类服务{
@自动连线
私有网络客户端网络;
公共单声道发送(){
web.post().uri(“/test”).bodyValue(“testval”).retrieve().bodytomino(String.class);
}
}
@春靴测试
公共类RestServiceITest{
@自动连线
私人服务;
@试验
public void testUrl(){
service.send();
//TODO如何验证接收到的webClient的请求uri+正文?
}
}

我认为您可以使用MockWebServer库。我准备了一个小演示来测试你的方法。当然,对于多个测试用例,您可以将MockWebServer初始化设置为BeforeAll
方法,并将关闭设置为aftereall方法

类RestServiceTest{
@试验
@鬼鬼祟祟
公共void testSend(){
MockWebServer服务器=新建MockWebServer();
//安排一些回应。
enqueue(newmockresponse().setBody(“你好,世界!”);
//启动服务器。
server.start();
String baseUrl=String.format(“http://localhost:%s,server.getPort());
//使用模拟服务器的基本url初始化WebClient
final-WebClient-WebClient=WebClient.builder().baseUrl(baseUrl.build();
//初始化我们的服务类
最终RestService RestService=新RestService(webClient);
//发送请求
最后一个字符串sendResponse=restService.send().block();
//断言
assertNotNull(sendResponse);
assertEquals(“你好,世界!”,sendResponse);
//获取记录的请求数据
RecordedRequest请求=server.takeRequest();
assertEquals(“testval”,request.getBody().readUtf8());
assertEquals(“POST”,request.getMethod());
assertEquals(“/test”,request.getPath());
server.shutdown();
}
}
要使用MockWebServer,您需要以下依赖项


com.squareup.okhttp3
okhttp
4.0.1
测试
com.squareup.okhttp3
模拟Web服务器
4.0.1
测试

我认为您可以使用MockWebServer库。我准备了一个小演示来测试你的方法。当然,对于多个测试用例,您可以将MockWebServer初始化设置为BeforeAll方法,并将关闭设置为aftereall方法

类RestServiceTest{
@试验
@鬼鬼祟祟
公共void testSend(){
MockWebServer服务器=新建MockWebServer();
//安排一些回应。
enqueue(newmockresponse().setBody(“你好,世界!”);
//启动服务器。
server.start();
String baseUrl=String.format(“http://localhost:%s,server.getPort());
//使用模拟服务器的基本url初始化WebClient
final-WebClient-WebClient=WebClient.builder().baseUrl(baseUrl.build();
//初始化我们的服务类
最终RestService RestService=新RestService(webClient);
//发送请求
最后一个字符串sendResponse=restService.send().block();
//断言
assertNotNull(sendResponse);
assertEquals(“你好,世界!”,sendResponse);
//获取记录的请求数据
RecordedRequest请求=server.takeRequest();
assertEquals(“testval”,request.getBody().readUtf8());
assertEquals(“POST”,request.getMethod());
assertEquals(“/test”,request.getPath());
server.shutdown();
}
}
要使用MockWebServer,您需要以下依赖项


com.squareup.okhttp3
okhttp
4.0.1
测试
com.squareup.okhttp3
模拟Web服务器
4.0.1
测试

除了
MockWebServer
之外,您还可以看看如何使用WireMock实现这一点。我已经编写了一个关于如何在Spring Boot和JUnit 5中使用它的教程:除了
MockWebServer
之外,您还可以看看如何使用WireMock。我已经编写了一个关于如何在Spring Boot和JUnit 5中使用它的教程: