Ich habe eine ActiveRecord-Klasse, die Bereiche dynamisch hinzugefügt hat basierend auf Inhalt einer anderen Tabelle.Rails Tests, Fixtures & Class loading order
(vereinfachte Codebeispiel)
class Thing < ActiveRecord::Base
Feature.all.each do |feature|
scope feature.name, ->{joins(:feature).where("feature.name = #{feature.name})}
end
end
Ein weiterer Teil der Benutzeroberfläche der App ist ein „Ding-Anzeige“, die Sie suchen und wenden diese Feature-Bereiche als Teil der Suche können.
Das alles funktioniert gut in der laufenden App.
In Tests jedoch scheint Erfolg hängt davon ab, in welcher Reihenfolge Dinge geladen werden. Manchmal Thing
hat die erwarteten Bereiche, andere Male nicht. Ich dachte, ich könnte die Feature
Klasse und Vorrichtungen zuerst laden, indem Sie Feature.count
aufrufen, bevor irgendwelche Tests laufen, aber das funktioniert nicht.
Gibt es eine Möglichkeit, das Laden von Klassen/Fixtures zu erzwingen, um dies zu beheben?
Sind Sie sicher, dass dies nicht mit [this] (http://stackoverflow.com/a/28515064/2116518) oder [this] verbunden ist (https://sanjusoftware.wordpress.com/2010/12/17/ Schienen-Fixtures-Load-Order /)? –
@NicNilov Ich verwende Postgres nicht, ich habe keine Fremdschlüsseleinschränkungen in meiner Datenbank, und die Tests bestehen/scheitern je nach der Reihenfolge der Ausführung der Tests. Diese verknüpften Probleme treffen also nicht zu. – z5h