gpt4 book ai didi

java - 使用 WebClient 时对 POST 请求正文进行单元测试

转载 作者:行者123 更新时间:2023-12-02 08:51:57 25 4
gpt4 key购买 nike

下面是我的代码片段,它将多部分请求发布到服务器。根据某种条件,它决定只发布一个文件或同时发布两个文件。

// Based on some condition add 1 or 2 files to the multipart body
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
if (postBothFiles) {
parts.add("File_ONE", new FileSystemResource(file1));
}
parts.add("File_TWO", new FileSystemResource(file2));


// Perform the post request adding `parts` to the body
webClient.post().uri("/postUrl")
.contentType(MULTIPART_FORM_DATA)
.body(BodyInserters.fromMultipartData(parts))
.retrieve()
.bodyToMono(String.class)
.block();

在单元测试期间,我想测试条件是否正常工作。为此,我想通过某种方式验证请求正文是否有两个文件或只有一个文件。

我尝试使用ExchangeFilterFunction,但它不允许我读取正文内容。

对此类 POST 请求进行单元测试的最佳方法是什么?

最佳答案

我认为你有两个选择。

  1. 使用PowerMock监视BodyInserters.fromMultipartDataPowerMock可以为静态方法制作spy/mock
  2. 考虑使用 okhttp/mockwebserver( https://github.com/square/okhttp/tree/master/mockwebserver#recordedrequest )。它可以记录请求正文,如下例所示。
MockWebServer server = new MockWebServer();
RecordedRequest request = server.takeRequest();
assertEquals("{}", request.getBody().readUtf8());

关于java - 使用 WebClient 时对 POST 请求正文进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60719352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com