Ich habe einige Methoden in meiner App, die HTTP-Anfragen machen. Gibt es eine gute Möglichkeit, Netzwerkfehler und schlechte Antworten für die Komponententests zu simulieren?
Geeignete Mock-Objekte sollten Sie solche Simulationen leicht durchführen lassen; Wenn Sie mit dem Konzept nicht vertraut sind, gibt es hier ein gutes Tutorial .
Bei Netzwerkausfällen ist nichts besser, als zuerst das Ethernetkabel Ihres Computers zu entfernen (oder es kabellos zu machen) und dann das Kabel zu entfernen, das Ihnen den Zugang zur Cloud ermöglicht.
Wenn Sie unter schlechten Antworten HTTP-Fehler verstehen, können Sie ASP-Skripte schreiben, die immer spezifische Fehler auslösen. Wenn Sie misslungene HTTP-Pakete testen möchten, müssen Sie dafür eine einfache Socket-App schreiben.
Umbrechen Sie die Bibliothek, die die HTTP-Aufrufe (z. B. java.net.URLConnection oder Commons HttpClient) hinter einer Schnittstelle ausführt, und schreiben Sie dann Implementierungen oder Mocks dieser Schnittstelle, die die Fehlerbedingungen simulieren.
Ihre Schnittstelle kann nur die Operationen darstellen, die Ihre Anwendung ausführen muss, und nicht die gesamte Bandbreite der HTTP-Client-Funktionalität.
Was wir in dieser Situation tun, ist die Ebene, die den Aufruf auslöst. Anstatt Ihre Logik direkt die HTTP-Anfrage zu machen, lassen Sie Ihren Code eine Funktion aufrufen. Innerhalb dieser Funktion kann etwas wie sein:
%Vor%Dann können Sie Ihre Komponententests auf einen Wert setzen, auf den die Funktion get_test_response () zugreifen kann. Auf diese Weise können Sie das Ergebnis des Aufrufs programmatisch ändern.
Tags und Links java unit-testing http