1

Kann man rspec anweisen, Rails vor dem Ausführen eines Beispiels neu zu starten? Ich baue eine Engine, die sich am Rails-Initialisierungsprozess beteiligt, und die Benutzer können in einem Initialisierer einige Konfigurationsänderungen vornehmen, die sich auf die Konfiguration von Rails und der Engine auswirken. Ich möchte in der Lage sein, diese Konfigurationsänderungen zu simulieren, Schienen neu zu starten und das Ergebnis zu testen.Wie kann RSpec angewiesen werden, Rails neu zu starten, bevor ein Beispiel ausgeführt wird?

+0

Siehe unten. Obwohl es keine praktische Antwort ist, hoffe ich, dass es Ihnen hilft, zu einer Lösung zu gelangen. Wenn Sie Probleme haben, fügen Sie weitere Details zu dem hinzu, was Sie versucht haben. –

Antwort

1

Ich habe diese Leistung noch nicht gemacht, aber als Best Practice denke ich, dass Ihre Engine Tests Teil der Engine sein sollten und minimale Abhängigkeiten haben sollten.

Einige Ansätze, die ich gesehen habe, und glauben, sollten Sie versuchen, und kombinieren:

  1. Mock ein minimal parent rails app Ihren Motor zu testen.
  2. Schreiben Sie multiple dummy apps to test with.
  3. Anstatt die gesamte Schienenanwendung zu laden, können Sie split spec_helper and rails_helper in smaller parts, auch gaining in setup time. Sie können schreiben.
  4. Sie können zur Laufzeit auch die Konfigurationswerte überschreiben, die sich in Ihrem Test widerspiegeln (plus: dependency injection verwenden!). Wenn Ihr Initialisierer komplex genug ist, können Sie extract it in a testable helper und wire it up in your test initializers.
  5. Auch scheint es ein Juwel dafür zu geben: Combustion.
+0

Danke für die Antwort. Es gibt einige großartige Vorschläge hier. – CodeSmith