2012-09-12 17 views
13

RSpecのstub_modelmock_modelの違いは何ですか?これまでのところ、スタブは、実際のメソッドが呼び出され、あらかじめ定義された値を返さないようにするために使用され、モックは実際には期待されており、メソッドが受信側で呼び出されることが必要です。RSpecのstub_modelとmock_modelの違いは何ですか?

これらのスタブ/モックは、コントローラにモデルに触れることなく、分離されたテストを可能にするために使用されることも知っています。しかし、私はまだこれらの2つの方法、それぞれが正確に使用されるとき、混乱していますか?詳細と例は非常に高く評価されます。どうもありがとう!

+0

これはあなたの質問が、私のために役立つ一つのことそのRSpecのを実現した「モック」に適用されるかどうかわからない「スタブ」は偽のメソッドを作成するためであった偽のオブジェクトを作成するためでした。通知私は 'stub_model'や' mock_model'については言及していませんが、モックとスタブのより一般的な用語については言及していません。 – Dty

答えて

11

stub_model

stub_model方法は、アクティブなモデルのモデルのインスタンスを生成します。

任意の例(モデル、ビュー、コントローラ、ヘルパー)でstub_modelを使用できますが、インタラクションベースより本質的に状態ベースのビューの例では特に便利です。

mock_model

mock_model方法は、アクティブなモデル モデルのように作用する二重テストを生成します。これは、実際のActiveModelクラスのインスタンスを生成するstub_modelメソッドとは異なります。

mock_modelの便益がstub_modelであることはその真の倍数なので、例は動作(または誤動作)、または他のコードの存在にも依存しません。 コントローラ仕様で作業していて、存在しないモデルが必要な場合は、mock_modelに文字列を渡すことができ、生成されたオブジェクトはその文字列で指定されたクラスのインスタンスとして動作します。

RSpecのドキュメント:stub_modelmock_model

関連する問題