junit - 如何使用 MockWebServer 验证 POST 正文的内容?

标签 junit junit4 okhttp retrofit2 mockwebserver

我有几个使用 Squares OkHttp 的单元测试小号 MockWebServer .测试运行良好,一切运行良好。到目前为止我不能做的一件事是验证 POST 请求的内容。

我为什么要这样做?
我正在开发的 REST Api 有一些方法,需要在 POST 请求正文中发送数据对象,其他方法需要将对象作为 FormUrlEncoded 发送数据字段。所以我想确保 Retrofit接口(interface)设置正确acc。到规范。

以下单元测试将通过,但第一个单元测试在正文中发送数据不正确:

//Incorrect
@POST("api/v1/user/senddata")
Observable<Void> senddata (
        @Path("VIN") String vin,
        @Body PoiWrapper wrappedPoi);

//Correct
@FormUrlEncoded
@POST("api/v1/user/senddata")
Observable<Void> senddata(
        @Path("VIN") String vin,
        @Field("data") PoiWrapper wrappedPoi);

我知道MockWebServertakeRequest()方法,但我坚持从该请求正文中获取实际字段和数据。

感谢您的帮助!

最佳答案

尝试关注 these examples :

RecordedRequest recordedRequest = server.takeRequest();
assertEquals("POST", recordedRequest.getMethod());
assertEquals("def", recordedRequest.getBody().readUtf8());
assertEquals("3", recordedRequest.getHeader("Content-Length"));
assertEquals("text/plain; charset=utf-8", recordedRequest.getHeader("Content-Type"));

关于junit - 如何使用 MockWebServer 验证 POST 正文的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38519700/

相关文章:

Netbeans 和创建 JUnit 测试

java - assertThat - hamcrest - 检查列表是否排序

java - Mockito 和 PowerMockito 错误

java - jaxb2-maven-plugin 与 JUnit4 的集成

java - Junit 最佳实践 : Public method calling multiple private methods

java - 好的http : Asynchronous request doesn't stop immediately after onResponse

android - picasso 使用 OKHttp 可以缓存所有请求吗?

java - OKHttp3 POST 错误 : Internal Server Error Java Android

java - 如何使用 IntelliJ 对 POM.xml 中定义的特定类别运行 Junit 测试

java - org.gradle.api.internal.tasks.testing.TestSuiteExecutionException : Could not complete execution for Gradle Test Executor 5