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?Testmethoden, die HTTP-Anfragen machen
Antwort
Geeignete Mock Objects sollten Sie solche Simulationen leicht durchführen lassen; Wenn Sie mit dem Konzept nicht vertraut sind, gibt es eine gute tutorial hier.
Bei Netzwerkausfällen ist nichts besser, als zuerst das Ethernetkabel des Computers (oder d/c ist es drahtlos) zu ziehen und dann das Kabel zu entfernen, um Zugriff auf die Cloud zu erhalten.
Wenn Sie mit schlechten Antworten HTTP-Fehler meinen, können Sie ASP-Skripte schreiben, die immer spezifische Fehler verursachen. Wenn Sie misslungene HTTP-Pakete testen wollen, müssen Sie dafür eine einfache Socket-App schreiben.
Ich bin mir nicht sicher, wie Sie den Prozess zum Herausziehen des Kabels in Ihr automatisches Build-System integrieren ;-) – assylias
Ziehen Sie Ihren lan Draht, oder schalten Sie Ihren WLAN-Router, während die Anfragen gestellt werden :)
Was wir in dieser Situation tun, ist abstrakt die Schicht, die den Anruf macht. Anstatt Ihre Logik direkt die HTTP-Anfrage zu machen, lassen Sie Ihren Code eine Funktion aufrufen. Innerhalb der Funktion so etwas wie sein:
if (in_test) {
response = get_test_response();
} else {
response = make_http_request();
}
Dann können Sie Ihre Unit-Tests einen Wert durch die get_test_response() Funktion zugänglich eingestellt haben. Auf diese Weise können Sie programmatisch ändern, was das Ergebnis dieses Anrufs sein soll.
Es ist normalerweise schlechte Form, diese Art von Logik in Ihrer Anwendung zu haben. Ich würde empfehlen, ein Mock-Objekt zu verwenden. – codecraig
Umschließen Sie die Bibliothek, 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.
Vielleicht wäre Spring test mocks von etwas Hilfe.
- 1. Testmethoden
- 2. Testmethoden, die nichts zurückgeben
- 3. Einheit Testmethoden erfordern Benutzereingabe
- 4. Wie Einheit Testmethoden, die System.Web.Security.Membership innerhalb verwenden?
- 5. JUnit-Testmethoden dynamisch ausführen
- 6. Testmethoden in einer ReactJS-Komponente?
- 7. Wie können wir die Testmethoden automatisch in .net ausführen?
- 8. Wie bestimmt MSTest die Reihenfolge, in der Testmethoden ausgeführt werden?
- 9. Verwenden Sie unterschiedliche Federtestkontextkonfiguration für unterschiedliche Testmethoden
- 10. Testmethoden einschließlich des Kontexts und usw.
- 11. Sollte ich meine Unit-Testmethoden dokumentieren?
- 12. Best Practice zur Sicherstellung der Testmethoden
- 13. Xamarin NUnitLite-Testmethoden: Wie werden geteilte Tests ausgeführt, die auf jeder Plattform ausgeführt werden?
- 14. Wie Einheit Testmethoden von Event Bus in Android geschrieben?
- 15. Warum sollten Testmethoden in Junit als öffentlich definiert werden?
- 16. Präfix für Testmethoden in Einheit: "test" vs "sollte"
- 17. Wie können mehrere Testklassen oder Testmethoden mit Maven ausgeführt werden?
- 18. Unit-Testmethoden dynamisch zur Laufzeit in MSTest erstellen
- 19. Machen Sie die URL
- 20. Statische Analyse CA1811-Fehler bei Testmethoden mit Lambda-Ausdrücken
- 21. Wie befüllen Sie die Datenbank nur einmal vor den Testmethoden im Frühlingstest?
- 22. machen svn pflegen die Dateierlaubnis
- 23. Die Hauptscrollleiste immer sichtbar machen
- 24. Constraints, die UITextView kleiner machen
- 25. machen Sie die Kontrolle für die Taste
- 26. Wie machen Sie die Potenzierung in C?
- 27. Wie einen Anruf über die Programmierung machen
- 28. HTML5-Eingabetyp = "Nummer" machen, die Bindestriche akzeptiert
- 29. Wie machen die Seite UWP generic
- 30. So machen Sie die Navigationsleiste transparent
+1 Verspotten Sie das, ziehen Sie nicht an Kabeln herum. –
Tutorial-Link ist abgelaufen. – tokhi