我正在尝试测试使用新 Java 11 的代码java.net.http.HttpClient
。
在我的生产代码中,我有这样的东西:
HttpClient httpClient = ... (gets injected)
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:1234"))
.POST(HttpRequest.BodyPublishers.ofByteArray("example".getBytes()))
.build();
return httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray());
在我的测试中,我模拟了HttpClient
,所以得到了java.net.http.HttpRequest
. 如何获取/测试其请求正文(= my "example"
)?我可以打电话request.bodyPublisher()
得到一个HttpRequest.BodyPublisher
,但后来我被卡住了。
- 我试图将它转换为
jdk.internal.net.http.RequestPublishers.ByteArrayPublisher
(它实际上是),但它不会编译,因为相应的包不是由模块导出的。 - 我已经检查了
HttpRequest.BodyPublisher
-interface (.contentLength()
,.subscribe(subscriber)
) 中的可用方法,但我想它们不可能。 - 我试图创建一个新的
BodyPublisher
并使用 比较它们.equals()
,但没有真正的实现,所以比较总是错误的。