我刚刚开始尝试Rails测试。我开始时遇到了麻烦。
我的第一次测试需要一个用户,我正在FactoryGirl中创建。但我的模型验证了邀请的存在。
class User
has_many :sent_invitations, :class_name => 'Invitation', :foreign_key => 'sender_id'
belongs_to :invitation
validates_presence_of :invitation_id
end
class Invitation
belongs_to :sender, :class_name => 'User'
has_one :recipient, :class_name => 'User'
end
如何使用FactoryGirl生成受邀用户?
我尝试了一些方法,但没有设置关联。似乎最有可能工作的是:
factory :invitation do
token "MyInvitationToken"
recipient_email "test@example.com"
factory :invited_user do
association :user, :factory => :user
end
end
factory :user do
email "test@example.com"
end
Validation failed: Invitation is required
失败了。
与FactoryGirl建立此关联的正确方法是什么?
对于奖励积分,我如何修改它,以便:invitation.recipient_email是一个序列sequence(:recipient_email) { |n| "test#{n}@example.com" }
,并且每次迭代都会将此值传递给invite_user的电子邮件列。
答案 0 :(得分:1)
你可以使用:
factory :user do
email "test@example.com"
f.association :invitation
end
OR
factory :user do
email "test@example.com"
after_build do |foo|
user.invitations << Factory.build(:invitation)
end
end