私は FactoryGirl を初めて使用し、次の簡単なシナリオを試していますか?
factory :female, :class => Gender do
code 'Female'
end
factory :male, :class => Gender do
code 'Male'
end
factory :papas, :class => Customer do
first_name 'Jim'
last_name 'Papas'
association :gender, :factory => :male, :strategy => :build
end
factory :dumas, :class => Customer do
first_name 'Mary'
last_name 'Dumas'
association :gender, :factory => :female, :strategy => :build
end
次に、私のテストで:
create(:male)
create(:female)
create(:papas)
create(:dumas)
Customer クラスには関連付けbelongs_to
Gender
クラスと、それが存在する必要があることを示す検証規則があることに注意してgender_id
ください。Gender
コードの一意性について、クラスの検証も行っています。
上記create(:papas)
のステートメントで、私のテストでは、Customer
is であるため、作成される予定の が無効であるというgender_id
エラーが表示されnil
ます。
:strategy => :build
on factory の性別との関連付けを削除するCustomer
:papas
と、 を作成しようとすると:papas
、性別のコードが既に存在するというエラーが表示されます。
上記のようにテストでデータを作成するには、何をする必要がありますか?
他のテストでも、顧客なしで性別を作成したいことに注意してください。factory create コマンドで顧客を作成し、同時に顧客に性別を作成させるように言わないでください。同じ性別の 2 人の顧客も作成しようとすると、これは機能しません。
また、次の回答よりも優れた回答が必要です。
@male = create(:male)
@female = create(:female)
create(:papas, :gender => @male)
create(:dumas, :gender => @female)
(フィクスチャを使用する場合、これらはそのまま使用できます。フィクスチャに戻りますか?)