Factory_Girl_Railsでフィクスチャの代わりにファクトリを使用するようにアプリケーションを変換しています。次のファクトリを定義しています。
factory :requirement do
sequence(:reqTitle) {|t| "Test Requirement #{t}"}
ignore do
categoryName " "
categoryAbbr " "
end
reqText "This is a test general requirement for the purpose of, um, testing things"
status "Approved"
factory :reqWithCat do
category
end
factory :reqWithNamedCat do
category {create(:category, catName: categoryName, catAbbr: categoryAbbr)}
end
factory :reqFromUserRequirement do
user_requirement
end
end
次に、セットアップセクションで、次のスニペットを実行します。
(0..5).each do |x|
requirement = create(:reqWithCat)
requirement.ind_requirements {|ir| [create(:ind_requirements)]}
end
(0..5).each do |x|
create(:reqWithNamedCat, categoryName: "User Interface", categoryAbbr: "UI")
end
ただし、レコードが作成されていないために、テストが失敗しているようです(たとえば、要件コントローラーのインデックステストでは、10個あるはずのレコードが0個返されていることがわかります)。デバッグモードでテストを実行すると、作成されたすべての要件がまったく同じID値を持っていることがわかりました。また、各レコードのシーケンス値は同じです。
重複したレコードの保存に失敗していると思います。そのため、0が返されます。しかし、間違って設定したものがわかりません。ここで何が欠けていますか?
関連する多数を適切に作成するようにユーザーファクトリを修正すると、モデルでスコープを定義する方法に基づいて、このファクトリを誤って記述したことがわかりました。それが修正されると、「壊れた」テストが機能し始めました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加