2012-03-28 3 views
1

Meine Rails-App spricht mit ein paar verschiedenen APIs, und ich möchte Tests schreiben, um sicherzustellen, dass Fehler ordnungsgemäß behandelt werden, falls es ein Problem mit einer Anfrage gibt. Zum Beispiel, wenn der Dienst nicht verfügbar und nicht erreichbar ist.Wie für API-Fehler zu testen?

Gibt es eine Möglichkeit, einen Fehler zu simulieren, der von einem Service kommt, obwohl es während des Tests in Ordnung sein könnte?

Antwort

1

Die webmock Edelstein hilft Ihnen dabei. Für Ihre spezielle Frage scrollen Sie nach unten zu "Antwort mit benutzerdefinierter Statusmeldung".

stub_request(:any, "www.example.com").to_return(:status => [500, "Internal Server Error"]) 

req = Net::HTTP::Get.new("/") 
Net::HTTP.start("www.example.com") { |http| http.request(req) }.message # ===> "Internal Server Error" 

Ich habe dieses Juwel mit Rspec und Test :: Unit verwendet. Der größte Nachteil besteht darin, dass die Übereinstimmungslogik, die entscheidet, welche Anforderungen für einen bestimmten Schein gelten, nicht immer so funktioniert, wie Sie es erwarten würden. Es ist ein kleiner Fehler. Der Edelstein ist ein Netto-Positiv und viel besser als der Versuch, einen Live-Service von einem Testfall zu treffen.

0

Sie können anstelle des echten Dienstes einen Schein verwenden, damit er einen Fehler zurückgibt.