複雑な一連のモデルをモデルからフォームオブジェクトに移動しましたが、いくつかのフックを削除すると、私はいくつかのテストを中断しました。FactoryGirlでのフォームオブジェクトの使用
問題は私の工場がモデルを作成し、実行中のフックに依存することです。ここで明白な解決策は、フォームオブジェクトに割り当てるようにファクトリを変更することですが、これはフォームオブジェクトのインスタンスを返し、壊れたすべてのテストを更新する必要があります。 FactoryGirlにフォームオブジェクトを使用してモデルを作成させてから、プロパティ(具体的には組み立てられたモデルのプロパティ)を返しますか?
はここに現在の工場だ - フォームオブジェクトが同じフィールド名を使用しています。
factory :project do
status "Project active"
association :director, factory: :employee
association :manager, factory: :employee
category { Settings.project.categories.billable.first }
estimated_completion_date { Date.current }
estimated_project_start_date { Date.current }
name { Faker::Lorem.words.join(' ') }
likelihood { Settings.project.likelihoods.first }
project_type { Settings.project.types.first }
proposal_due_date { Date.current }
proposal_verdict_date { Date.current }
description { Faker::Lorem.paragraph }
research_independence { Settings.project.research_independence.first }
factory :unsuccessful_proposal do
status "Proposal unsuccessful"
end
factory :proposal_submitted do
proposal_submitted_date { Date.current }
status "Proposal submitted"
after(:build) do |proposal, evaluator|
proposal.clients << build(:client)
end
end
end
編集:私はクリスマスに、これはかなり近い聞くと、それは非常に少しの注意を得ました。私自身の研究では、工場でinitialize_withを使用してフォームオブジェクトを作成し、FactoryGirlの保存動作を変更するためにto_createを使用でき、FactoryGirlにカスタムビルド戦略を直接適用できます。私がそれをする方法を考えれば、私は自分の質問に答えるために戻るでしょう。現在のところ、関連付けは正しく行われていませんが、正しくプロジェクトを作成しているようです。