Junit 如何使用MockWebServer验证帖子正文的内容?

Junit 如何使用MockWebServer验证帖子正文的内容?,junit,junit4,okhttp,retrofit2,mockwebserver,Junit,Junit4,Okhttp,Retrofit2,Mockwebserver,我有几个单元测试使用SquaresOkHttpsMockWebServer。测试运行良好,一切正常。到目前为止,我唯一不能做的就是验证POST请求的内容 我为什么要这样做? 我正在开发的RESTAPI有一些方法,要求在POST请求主体中发送数据对象,其他方法要求将对象作为FormUrlEncoded数据字段发送。因此,我想确保,改装接口按照规范正确设置 以下单元测试将通过,但第一个单元测试在主体内部错误发送数据: //Incorrect @POST("api/v1/user/senddata")

我有几个单元测试使用Squares
OkHttp
s
MockWebServer
。测试运行良好,一切正常。到目前为止,我唯一不能做的就是验证POST请求的内容

我为什么要这样做?
我正在开发的RESTAPI有一些方法,要求在POST请求主体中发送数据对象,其他方法要求将对象作为
FormUrlEncoded
数据字段发送。因此,我想确保,
改装
接口按照规范正确设置

以下单元测试将通过,但第一个单元测试在主体内部错误发送数据:

//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);
//不正确
@POST(“api/v1/user/senddata”)
可观测数据(
@路径(“VIN”)字符串VIN,
@车身包装纸(包装纸);
//正确的
@FormUrlEncoded
@POST(“api/v1/user/senddata”)
可观测数据(
@路径(“VIN”)字符串VIN,
@字段(“数据”);
我知道
MockWebServer
takeRequest()
方法,但我一直在从请求主体获取实际字段和数据

谢谢你的帮助

尝试以下操作:


好吧,这不是我问题的100%解决方案,但它把我推向了正确的方向。
readUtf8()
返回带有HTML编码表单字段的正文。我仍然需要解码字符串,将其反序列化为
映射
,然后检查键和值。
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"));