【发布时间】:2015-03-18 17:52:04
【问题描述】:
有没有办法在运行测试时按特定顺序加载 Rails 固定装置?例如,参加以下课程...
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 有一个数据库级别 外键约束,要求 Users 和 Groups 在创建之前存在。但是,由于 Rails 按字母顺序加载夹具,Memberships 在 Users 之前加载,并且出现错误,说明关系不存在(正确)。
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "memberships" violates foreign key constraint
有没有办法在运行测试时加载 Memberships 之前加载 Users 和 Groups 固定装置?
【问题讨论】:
-
你在使用命名的灯具吗?见这里:stackoverflow.com/questions/510195/…
-
是的,我正在使用命名固定装置。
-
您是否尝试过设置 FIXTURES 环境变量?和/或在测试中使用“fixtures”命令来指定加载哪些fixture?
-
我已尝试设置
FIXTURE变量。 -
FIXTURE 还是 FIXTURES?
标签: ruby-on-rails unit-testing fixtures