如何解决MockServer意外响应并显示为空
我们来看一个测试,该测试使用MockServer(org.mock-server:mockserver-netty:5.10.0
)来模拟响应。
预计响应主体将等于字符串"something"
。
但是,该测试失败了,因为响应主体是一个空字符串。
@Test
void test1() throws Exception {
var server = ClientAndServer.startClientAndServer(9001);
server
.when(
request().withMethod("POST").withPath("/checks/"),exactly(1)
)
.respond(
response()
.withBody("\"something\"")
.withStatusCode(205)
.withHeader("Content-Type","application/json")
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:9001/checks/"))
.POST(BodyPublishers.noBody())
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request,BodyHandlers.ofString());
assertEquals(205,response.statusCode());
assertEquals("something",response.body()); // fails
}
如何使响应主体与response().withBody(...)
中提供的字符串相等?
解决方法
问题出在客户端。它会丢弃内容。
为什么!?
因为HTTP 205
是RESET_CONTENT
。
意外将这种状态选择为“与HTTP 200不同”,不幸地导致了这种行为。
尽管它严格符合here,但看起来却是非常流行的“偶然”错误(即HTTP spec)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。