Ich habe mehrere Unit-Tests, die Quadrate OkHttp
s MockWebServer
verwenden. Die Tests laufen gut und alles funktioniert sehr gut. Das Einzige, was ich bisher nicht tun konnte, ist den Inhalt der POST-Anfragen zu verifizieren.Wie kann ich den Inhalt einer POST-Nachricht mit MockWebServer überprüfen?
Warum möchte ich das tun?
Die REST-API, für die ich entwickle, hat einige Methoden, die erfordern, dass die Datenobjekte im POST-Requests-Body gesendet werden, andere Methoden erfordern, dass die Objekte als FormUrlEncoded
-Datenfeld gesendet werden. So möchte ich sicherstellen, dass die Schnittstelle Retrofit
korrekt eingerichtet wurde. zur Spezifikation.
Die folgende Unit-Test wird vorübergehen, aber der erste sendet im Inneren des Körpers, die Daten falsch:
//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);
weiß, dass ich die MockWebServer
die takeRequest()
Methode hat, aber ich bin fest mit den tatsächlichen Feld bekommen und Daten von diesem Anfragekörper.
Vielen Dank für Ihre Hilfe!
Ok, das ist die Lösung für mein Problem nicht zu 100%, aber es schob mich in die richtige Richtung. Die 'readUtf8()' gibt den Rumpf mit HTML-kodierten Formularfeldern zurück. Ich muss den String noch dekodieren, zu einer 'Map' deserialisieren und dann die Schlüssel und Werte überprüfen. – ASP