Wie soll ich mit Online-Abhängigkeiten umgehen, wenn Rspec offline ausgeführt werden?
-
25-09-2019 - |
Frage
Ich möchte RSpec laufen meinen Code zu testen beide, wenn ich mit dem Internet verbunden, und wenn ich es nicht bin.
Leider gibt es einige Tests in der Anwendung, die auf mit einer Live-Verbindung angewiesen ist - E-Mail senden, Facebook-Integration usw.
Gibt es einen Best-Practice-Weg ein Online- / Offline-Testumgebung zu erstellen, oder ist dies schlechte Praxis? Zu urteilen, wie wenig ich über diese im Internet finden kann ich die letztere bin zu raten.
Lösung
Normalerweise in solchen Situationen, dass Sie die Teile des Codes verspotten würde, dass connect außerhalb Ihrer Anwendung. Auf diese Weise können Sie testen gegen die erwarteten Ergebnisse aus dem Dienst / System, das Sie eine Verbindung herstellen. Es ist auch schnellen Tests auszuführen.
Es gibt eine kurze Anleitung auf spöttische mit rspec hier aber ich bin sicher, können Sie finden viel selbst.
Für die Prüfung, dass E-Mails dort gesendete sind andere Ansätze, wenn Sie durch Action senden. Es gibt einen Abschnitt auf, dass in der Schienen Testen Führungs .
EDIT (als Antwort auf Kommentar):
Sie könnten eine Methode in TestHelper
nur laufen Tests setzen, wenn Sie online sind. So etwas wie:
def when_online
if test_remote_connectivity
yield
else
puts "Skipping test offline."
end
end
Dann können Sie es wie nennen:
def test_facebook
when_online do
.....
end
end
Nicht sicher, ob ich es ganz befürworten, aber es könnte das tun, was Sie wollen!
Andere Tipps
könnten Sie verwenden webmock in den Tests / specs Sie keine Verbindung zu dem Remote-Ressource wollen.