1

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 が sequencesequence(:recipient_email) { |n| "test#{n}@example.com" }になるように変更でき、この値が反復ごとに Invitation_user の email 列に渡されるのでしょうか。

4

1 に答える 1

1

あなたが使用することができます:

factory :user do
  email "test@example.com"
  f.association :invitation
end

また

factory :user do
  email "test@example.com"

  after_build do |foo|
    user.invitations << Factory.build(:invitation)
  end
end
于 2012-04-21T05:04:18.423 に答える