0

古典的なブログ投稿の例で、次のモデルがあるとします。

class Blog < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :blog
  has_many :comments

  validates_presence_of :blog
end

class Comment < ActiveRecord::Base
  belongs_to :post

  validates_presence_of :post
end

ファクトリ経由でコメントを作成したいときは、テストではあまり気にしませんが、最初にブログを作成して投稿する必要があります。何百回ものテストを行うと、これには多くの時間がかかります。

これらのテストされていないレコードを常に作成しないようにするためのベスト プラクティスは何ですか?

4

2 に答える 2

1

このファクトリを分離するには、投稿が存在するふりをして、comments.post_id を偽の ID に設定する必要があると思います (例 1)。

FactoryGirl.define do

  factory :comment do 
    content 'testing text'


    factory :comment_without_post do
      post_id 1 
    end

    factory :comment_with_post do
      post
    end
  end 
end
于 2012-05-01T18:10:14.353 に答える
0

親要素にフィクスチャを使用してみてください。私は通常、この目的のためにモデルごとに 1 つまたは 2 つのフィクスチャのみを設定し、親要素が重要でない任意のファクトリ作成の親要素としてフィードします。

フィクスチャのロードは検証をトリガーしないため、モデルの設定方法によっては、実際には無効になる可能性があることに注意してください。その結果、これらのフィクスチャを実際のテストの対象として使用しないようにしています。

モックやスタブの複雑さに煩わされることなく、実行時間を半分に短縮します。

于 2012-05-10T14:02:12.603 に答える