10

Alert と Zipcode という 2 つのモデルがあり、1 つの Alert には 1 つ以上の Zipcode が必要です。

class Alert < ActiveRecord::Base
  attr_accessible :descr, :zipcode

  has_many :zipcode
  validates :zipcode, :length => { :minimum => 1 }
end

class Zipcode < ActiveRecord::Base
  attr_accessible :zip
  belongs_to :alert
end 

次のように FactoryBot ファクトリを作成するにはどうすればよいですか。

  • 郵便番号工場は独自のファイルで定義されています
  • アラート ファクトリは独自のファイルで定義されます
  • Alert は Zipcode によって定義されたファクトリに依存できますか?

私が読んだすべてのドキュメントと例では、親ファクトリ ファイル内に含まれるクラスを定義するか、それらをすべて一緒に blob するか、その他の妥協または回避策を講じることを想定しています。スペック ファクトリを分離しておくためのクリーンな方法はありませんか?

4

1 に答える 1

12

秘訣は、コンテナー クラス、つまり、定義に has_many ステートメントを含むクラスが、格納されているクラスを FactoryBot の配列として作成することを確認することです。例えば:

spec/factories/zipcodes.rb で:

FactoryBot.define do
  factory :zipcode do
    zip { 78701 + rand(99) } 
  end
end

そして、spec/factories/alerts.rb で:

FactoryBot.define do
  factory :alert do
    zipcode { Array.new(3) { FactoryBot.build(:zipcode) } }
  end
end
于 2012-08-24T23:16:32.463 に答える