8

FactoryGirlは私の保護された属性を設定しませんuser.confirmed。ここでのベストプラクティスは何ですか?

Factory.define :user do |f|
  f.name "Tim"          # attr_accessible -- this works
  f.confirmed true      # attr_protected -- doesn't work
end 

私は@user.confirmed = true自分の工場を使用した後に行うことができますが、それは多くのテストにわたって多くの繰り返しです。

4

3 に答える 3

10

after_createフックの使用は機能します:

Factory.define :user do |f|
  f.name "Tim"
  f.after_create do |user|
    user.confirmed = true
    user.save
  end
end 
于 2012-01-18T19:04:20.290 に答える
3

FactoryGirlは大量割り当てからユーザーを保護しているため、ユーザーを作成するときにハッシュに渡す必要があります。

user ||= Factory(:user, :confirmed => true)
于 2012-01-18T06:01:18.817 に答える
0

もう1つのアプローチは、次のようなRailsの組み込みロールを使用することです。

#user.rb
attr_accessor :confirmed, :as => :factory_girl

FactoryGirlを一括割り当てすると、この役割がブロードキャストされ、このパターンが可能になります。

長所:ファクトリを高速、シンプル、クリーンに保ちます(コールバックのコードが少なくなります)
短所:テストのモデルコードを変更します:(

短所に対処するためのいくつかのテストされていない提案:

  • 工場のすぐ上でクラスを再開できます。
  • [test |spec]_helperでクラスを再度開くことができます
于 2013-06-03T16:14:51.940 に答える