2009-06-15 6 views

Antwort

12

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.

+0

+1 Verspotten Sie das, ziehen Sie nicht an Kabeln herum. –

+4

Tutorial-Link ist abgelaufen. – tokhi

1

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.

+0

Ich bin mir nicht sicher, wie Sie den Prozess zum Herausziehen des Kabels in Ihr automatisches Build-System integrieren ;-) – assylias

0

Ziehen Sie Ihren lan Draht, oder schalten Sie Ihren WLAN-Router, während die Anfragen gestellt werden :)

1

Haben Sie versucht HTTPUnit und JWebUnit?

+0

keine Antwort auf Frage erneut gelesene Frage –

-1

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.

+1

Es ist normalerweise schlechte Form, diese Art von Logik in Ihrer Anwendung zu haben. Ich würde empfehlen, ein Mock-Objekt zu verwenden. – codecraig

1

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.

Verwandte Themen