Ich versuche, eine Openid-Provider-Klasse zu testen. Die Openid-Verbraucherklasse führt eine http-Anfrage durch. Ich verspotte die Antwort auf diese Anfrage mit Wiremock. Ich versuche, eine gültige offene Antwort zu verspotten. Die gültige Antwort hängt jedoch von den Anforderungsparametern ab. Kann ich mithilfe von Wiremock eine Scheinanforderung einrichten, bei der der Hauptteil der Antwort von den Anforderungsparametern abhängt?Mit Wiremock, kann ich einen Körper zurückgeben, der von der Postanforderung abhängig ist
Antwort
Ich habe noch nie einen Draht verwendet. Aber gemäß ihrer online documentation können Sie einen Mock schreiben, der den URL- und Request-Body-Parametern entspricht. Sie sollten also in der Lage sein, verschiedene Mocks zurückzugeben, abhängig von den Parametern in der URL selbst oder eingebettet in den Anfragetext.
Soweit ich weiß und meine Erfahrung mit WireMock, nein.
Sie können eine Antwort nicht mit Argumenten parametrisieren, die durch die Anforderung übergeben werden. Das Beste, was Sie tun können, ist Matcher zu verwenden, damit Ihr verspotter Server entsprechend reagiert.
Ich würde Ihnen empfehlen, einige Unit- oder Integrationstests mit plain jUnit durchzuführen, um Anfragen/Antworten in solchen Fällen zu testen. Sie sollten schneller sein, wenn Sie testen möchten, ob die Quittungsanfragen korrekt reagieren. Ich sehe WireMock als Alternative zum Abnahmetest, um sicherzustellen, dass Ihre Schnittstelle mit anderen REST-Diensten nicht beschädigt wird.
Ich habe das ein bisschen untersucht und die Antwort ist nein (ab heute sowieso).
Sie müssen für jede Anforderung, die eine eindeutige Antwort erfordert, eine spezifische (statische) Antwort einrichten.
Dies ist möglich, Sie müssen nur einen ResponseTansformer verwenden. Im folgenden Codebeispiel wird die responseDefinition durch den folgenden Stubbing bestimmt. Hier verspotte ich einen Codierdienst, indem ich einfach die Body-Bytes zurück zum Aufrufer gebe. Obwohl ich im Transformator frei bin, kann ich, was immer mir gefällt, basierend auf dem Inhalt der Anfrage zurückgeben.
int port = 8080;
WireMockServer wireMockServer = new WireMockServer(new WireMockConfiguration().port(port).extensions(new ResponseTransformer() {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files) {
return new ResponseDefinitionBuilder().like(responseDefinition)
.withBody(request.getBodyAsString().getBytes())
.build();
}
@Override
public String name() {
return "request body returning request transformer";
}
}));
wireMockServer.start();
WireMock.configureFor("localhost", port);
stubFor(post(urlEqualTo("/encode"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/octet-stream")
.withStatus(200)));
stubFor(post(urlEqualTo("/decode"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/octet-stream")
.withStatus(200)));
Wiremock unterstützt Erweiterungen, die Sie selbst schreiben können, die als Middleware handeln verwendet, um die Anfrage- und Antwort Körper abfangen, so dass Sie es jedoch formatiert werden, die Sie mögen. Es ist sehr flexibel und ermöglicht es Ihnen, neue Reaktionskörper dynamisch oder gar nicht zu reagieren.
Als Beispiel haben wir eine Erweiterung für OpenTable geschrieben und Open Source auf Maven Central. Es ermöglicht Ihnen, die JSON-Attribute als Variablen zu behandeln und sie in Ihren Antworttext zu interpolieren. Hör zu. Lassen Sie uns wissen, wie es läuft oder wenn Sie Fragen haben. https://github.com/opentable/wiremock-body-transformer
- 1. 301 Status während der Verwendung der Postanforderung
- 2. Postanforderung an einen Server senden
- 3. Wiremock auf der lokalen Festplatte
- 4. Twitter API zurückgeben leere Körper mit node.js
- 5. C++ einen Variablentyp abhängig machen von der Benutzereingabe
- 6. Was ist die Größenbeschränkung einer Postanforderung?
- 7. Ist der Wertebereich von der Größe des Datentyps abhängig?
- 8. Warum kann ich größere Werte nicht von der Hauptfunktion zurückgeben?
- 9. abhängig von der YVAL-Variable
- 10. Verbrauchen Sie einen Körper, der nicht ganz JSON ist
- 11. Wiremock-Kompatibilität mit Jetty9
- 12. Symfony2.8. So erhalten Sie Daten von der Postanforderung
- 13. Verwendung von PHP zum Speichern der Ergebnisse einer Postanforderung
- 14. Wie kann ich einen String Vector zurückgeben?
- 15. Zurückgeben der Zeile unter einen definierten Bereich
- 16. Wie kann ich einen Teil einer Liste mit der Erstellungszeit zurückgeben?
- 17. Wie kann ich rustdoc für eine Bibliothek anzeigen, von der mein Projekt abhängig ist?
- 18. Wie kann ich einen Wert aus der Funktion zurückgeben, nachdem der Speicher in ExtJs geladen wurde?
- 19. JUnit Scheduler, der nicht von Android abhängig ist
- 20. Kann ich einen geparsten XML-Pfad mit XML :: Simple zurückgeben?
- 21. Ist der #pragma-Direktiven-Compiler abhängig?
- 22. WireMock für datengesteuerte Mocks?
- 23. Angular2 Provider, der von anderen Providern abhängig ist
- 24. Postanforderung ist in jmeter zu groß
- 25. Ersetzen von Stylesheets mit jQuery abhängig von der Bildschirmgröße
- 26. AngularJS-Vorlage abhängig von der Eigenschaft
- 27. Ich muss die img abhängig von der Fensterbreite ändern
- 28. Abrunden der Ecken von HTML-Tabelle Körper
- 29. Ändern Einschränkungen abhängig von der Bildschirmgröße
- 30. Ist die Speicherauslastung von der iOS-Version abhängig?
Ich muss die digitale Signatur der URL für die Openid-Anfrage überprüfen. Ich denke nicht, dass dies funktioniert, also werde ich einen anderen Java http Server dafür suchen. –