before(:each)
ブロックを使用できるとき、rspecテストでFactory Girlの目的は何ですか?ファクトリーガールとbefore(:each)
の唯一の違いは、ファクトリがテスト外でオブジェクトの作成を準備していることです。これは正しいですか?工場の女の子 - 目的は何ですか?
答えて
Factory GirlとShamのような宝石は、有効で再利用可能なオブジェクト用のテンプレートを作成することを可能にします。それらはデータベースにロードされなければならない固定レコードがある場所に対応して作成されました。オブジェクトをインスタンス化するときに、より多くのカスタマイズが可能になり、有効なオブジェクトを確実に確保することを目指します。あなたのテストのどこにでも、テストフックの前後にも使用できます。
before(:each)、before(:all)、after(:each)、after(:all)はすべて、テストグループ内で共有されるセットアップとティアダウンを行う場所を提供します。たとえば、1回のテストごとに新しい有効なユーザーを作成する場合は、前の(:each)フックでこれを実行するとよいでしょう。あなたがファイルシステムからいくつかのファイルを消去しようとするならば、前のフックでそれをしたいと思っています。あなたのテストがすべてtmpファイルを作成し、テスト後に削除したい場合は、after(:each)またはafter(:all)フックで行います。
これらの2つの概念が異なる点は、ファクトリがテストの周りにフックを作成することではなく、有効なRubyオブジェクトとレコードを作成することを目的としているためです。前後のフックは、サンプルグループで共有されるセットアップとティアダウンの作業を目的としているため、セットアップとティアダウンコードをDRY状態に保つことができます。
これを言う別の方法:FactoryGirlファクトリは、 'give_me_a_valid_model'ファンクションのようなものです。もしあなたが複数の 'before:each'ブロックでそれを必要とするなら、それはあなたにいくつかの繰り返しを保存します。有効なモデル(関連付け、独自の値の確保など)を設定することが複雑になればなるほど、それはあなたの労力を節約します。 –
FactoryGirlはテストでフィクスチャを置き換えます。この方法では、データモデルを変更するときにフィクスチャを最新の状態に保つ必要はありません。また、より多くのエッジケースを追加すると、フィクスチャが扱いにくくなる傾向があります。
FactoryGirlはオンザフライでデータを生成し、フィールドの追加と削除はずっと簡単です。また、フィクスチャを使用する方法だけでセットアップで使用できます。
それが明確になりますか?
工場が治具の「スマートな」代替品であることを理解するために、しばらく私を見ました。私はまだモックとスタブの違いについてもっと学ぶことに興味があります。 – Docunext
確かに、ありがとうございます。 :)彼らが器具の良い代替品であることを知っておいてよかった。ハートルのチュートリアル(良い、btw)が器具とファクトリーガールの間を出入りしていたので少し奇妙でした。私は自分自身が混乱していると感じました。今私が知っている、私はおそらくより頻繁にそれを使用します。 :) – curiousdork
また、フィクスチャ定義はアプリケーション全体でグローバルです。ファクトリはローカルにすることができます。そのため、孤立したテストケース固有のデータは、その特定のコンテキストに対して設定され、単一のグローバルフィクスチャファイルには設定されません。
This bookは、あなたが問題でいくつかのより多くの読書
- 1. モック、スタブ、工場の女の子の違いは何ですか?
- 2. 工場の女の子とUser.create - 違いは何ですか?
- 3. 工場の女の子MiniTest
- 4. キュウリとRspec工場工場の女の子工場
- 5. 工場の女の子一意性検証は、関連工場
- 6. 工場の女の子 - 理解団体
- 7. Rspec工場の女の子の問題
- 8. rspecと工場の女の子との工場の重複エラー?
- 9. すぐにガードと工場の女の子と工場をリントするには?
- 10. 工場の女の子:同じオブジェクトを何回か使用する
- 11. RSpec、Devise、工場の女の子でコントローラをテストする
- 12. Rspecと工場の女の子でbefore_saveコールバックをテストする
- 13. 工場の女の子 - 関連するレコードを作成する
- 14. 工場の女の子との不具合
- 15. 工場の女の子:has_many/throughアソシエーションを設定する方法
- 16. RSPECと工場の女の子SystemStackError:スタックレベルが深すぎ
- 17. Rails 3 - belongs_toテーブルのための工場の女の子とシーケンス
- 18. 工場の女の子の非アクティブなアソシエーションの問題
- 19. 工場の女の子の従属属性
- 20. パラノイアと工場の女の子によるソフト削除
- 21. 工場女の子未定義の変数
- 22. 工場女の子団体とスパークの相違
- 23. 多くのスルーと存在のバリデーションを持つ工場の女の子のオブジェクト
- 24. Rails 3 - 工場の女の子の宝石 - belongs_toとhas_oneの関係
- 25. 初期化されていない定数ApplicationRecordは工場の女の子ですか?
- 26. 工場の女の子が作成する永続的なデータにインスタンス変数を割り当てる動作
- 27. 暗黙のhas_manyアソシエーションを持つ工場少女
- 28. 私のモデルバリデーションをバイパスする工場少女の作成
- 29. DAO工場パターンとは何ですか?
- 30. Javascript:工場とは何ですか?
をしたい場合、これがFactoryGirlはActiveReccord https://cbabhusal.wordpress.com/2015/04/21/ruby-on-rails-factoryとの対話方法で非常によく主題をカバー-girl-how-it-interactrecord-with-activerecord/ – illusionist