Mir wurde gesagt, dass ich meine rspec-Spezifikationen nicht in einem rails_env anders als test ausführen sollte.
Was sind die möglichen Probleme bei der Ausführung von Spezifikationen in der Produktion oder Entwicklung? Ich führe Spezifikationen in beiden aus. Normalerweise lasse ich die Spezifikationen in Dev laufen, außer wenn ich etwas teste, das die Asset-Pipeline verwendet. Ich wechsle in die Produktion und verbringe 15 Minuten damit, Assets vorkompilieren. Hat die Verwendung der Testumgebung gegenüber meinen aktuellen Methoden Vorteile?
Ich suchte nach einer Antwort, aber nichts erklärte, warum ich nicht Dev oder Prod verwenden sollte.
Das Ausführen von Testsuiten (z. B. rspec ) in einer test
-Umgebung dient dazu, Ressourcen aus Sicherheitsgründen zu isolieren, insbesondere die Integrität Ihrer Datenbanken. Tests korrumpieren oder löschen Daten in Ihren Datenbanken oft.
Das Gleiche gilt für alle Ressourcen. Wenn Sie die test
-Umgebung verwenden, können Sie Ressourcen abschneiden und vortäuschen, wodurch verhindert wird, dass Tests irgendetwas beschädigen.
Es gibt viele Gründe für die Verwendung separater Umgebungen, aber im Grunde ist es eine Trennung von Ressourcen, und im Kontext der test
-Umgebung ermöglicht es die Validierung Ihrer Anwendung und gewährleistet gleichzeitig die Sicherheit der Produktionsressourcen und des laufenden Systems .
Seien wir klar, besonders für Nubes, die diesen Beitrag lesen: RAILS_ENV=production
(lokal) ist nicht dasselbe wie Test in der production
Umgebung ausgeführt wird. Ich weiß, dass Sie (OP) das wissen, aber die Gefahr, Tests in der Produktion durchzuführen, rechtfertigen diese Warnung.
Es gibt mehrere Gründe, nur in test
env zu laufen, was generell mit der Handhabung der DB zusammenhängt:
andere Gründe sind entlang der Linien, die Sie bereits vermutet haben:
Die Möglichkeiten sind zu benutzerdefiniert (zu Ihrer App), um eine Best-Practice zu empfehlen ... aber natürlich gibt es viele "Testmodus" -Einstellungen, die möglicherweise konfiguriert werden müssen, wenn rails_ENV=test
Sie sollten Ihre Prioritäten klarstellen. Warum führen Sie Spezifikationen aus?
Ich würde sagen, die meisten Leute führen Spezifikationen für 2., und das sollte wirklich in der Testumgebung stattfinden, nur aus den Gründen in NewAlexandrias Antwort gegeben.
Wenn Sie nach der Bereitstellung nach 1 suchen möchten, scheint die Ausführung von Spezifikationen für mich ein bisschen weit hergeholt. Es sollte einfachere Wege geben.
Bei der Bereitstellung, und Sie sind nicht sicher über 2. ... das ist eine vorzeitige Bereitstellung, etwas, was Sie nicht tun sollten.
Tags und Links ruby ruby-on-rails-3 ruby-on-rails testing rspec