13

OkHttpSquares 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()、そのリクエスト本文から実際のフィールドとデータを取得することに固執しています。

ご協力ありがとうございました!

4

1 に答える 1

25

次の例に従ってみてください:

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"));
于 2016-07-22T11:56:00.273 に答える