Gibt es eine Möglichkeit, Rails-Vorrichtungen in einer bestimmten Reihenfolge zu laden, während Tests ausgeführt werden? Nehmen wir zum Beispiel die folgenden Klassen ...Laden von Schienenvorrichtungen in einer bestimmten Reihenfolge beim Testen
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, through: :memberships
end
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, through: :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
Memberships
haben eine Datenbankebene Fremdschlüssel Users
und Groups
erfordern vorhanden sein, bevor sie erstellt werden können. Da jedoch Rails das Gerät alphabetisch lädt, werden Memberships
vor Users
geladen, und ein Fehler tritt auf, der besagt, dass die Beziehungen nicht existieren (zu Recht).
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "memberships" violates foreign key constraint
Gibt es eine Möglichkeit, die Users
und Groups
Vorrichtungen zu laden, bevor Memberships
Laden während Tests ausgeführt werden?
Verwenden Sie benannte Fixtures? Siehe hier: http://stackoverflow.com/questions/510195/rails-fixtures-how-do-you-set-foreign-keys – davidfurber
Ja, ich verwende benannte Fixtures. –
Haben Sie versucht, die FIXTURES env var einzustellen? Und/oder den "Fixtures" -Befehl im Test verwenden, um anzugeben, welche Fixtures geladen werden sollen? – davidfurber