如何使用 MockWebServer 验证 POST Body 的内容?
How can I verify the content of a POST Body with MockWebServer?
我有几个使用 Squares OkHttp
s MockWebServer
的单元测试。测试 运行 一切正常,并且一切正常。到目前为止我无法做的一件事是验证 POST 请求的内容。
我为什么要这样做?
我正在开发的 REST Api 有一些方法,需要在 POST 请求主体中发送数据对象,其他方法需要将对象作为 FormUrlEncoded
数据发送场地。所以我想确保 Retrofit
接口设置正确。符合规范。
下面的单元测试会通过,但是第一个在正文中发送数据不正确:
//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);
我知道 MockWebServer
有 takeRequest()
方法,但我一直无法从请求正文中获取实际字段和数据。
感谢您的帮助!
尝试以下 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"));
我有几个使用 Squares OkHttp
s MockWebServer
的单元测试。测试 运行 一切正常,并且一切正常。到目前为止我无法做的一件事是验证 POST 请求的内容。
我为什么要这样做?
我正在开发的 REST Api 有一些方法,需要在 POST 请求主体中发送数据对象,其他方法需要将对象作为 FormUrlEncoded
数据发送场地。所以我想确保 Retrofit
接口设置正确。符合规范。
下面的单元测试会通过,但是第一个在正文中发送数据不正确:
//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);
我知道 MockWebServer
有 takeRequest()
方法,但我一直无法从请求正文中获取实际字段和数据。
感谢您的帮助!
尝试以下 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"));