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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top