私は、スクエアを使用するいくつかのユニットテストを持っていますOkHttp
s MockWebServer
。テストはすべて正常に動作し、すべてがうまく動作します。これまでにできなかったことの1つは、POST要求の内容を確認することです。MockWebServerでPOST本体の内容を確認するにはどうすればよいですか?
なぜ私はそれをしたいですか?
私が開発している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次
[OK]を、それは100%私の問題への解決策ではないのですが、それは正しい方向に私を押しました。 'readUtf8()'は、HTMLエンコードされたフォームフィールドを持つ本文を返します。私はまだStringをデコードし、それを 'Map'にデシリアライズしてから、キーと値をチェックしなければなりません。 – ASP