13

RSpecのstub_modelとの違いは何ですか? mock_modelこれまでのところ、スタブは実際のメソッドが呼び出されないようにして事前定義された値を返すために使用され、モックは実際には期待値であり、レシーバーでメソッドが呼び出される必要があることを知っています。

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

4

1 に答える 1

14

stub_model

このstub_modelメソッドは、アクティブ モデル モデルのインスタンスを生成します。

任意の例 (モデル、ビュー、コントローラー、ヘルパー) で使用できますがstub_model、相互作用ベースよりも本質的に状態ベースであるビューの例で特に役立ちます。

モックモデル

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

mock_modeloverの利点はstub_model、真の double であるため、例は動作 (または誤動作) に依存せず、他のコードの存在にも依存しないことです。コントローラーの仕様に取り組んでいて、存在しないモデルが必要な場合はmock_model、文字列を渡すことができます。生成されたオブジェクトは、その文字列によって名前が付けられたクラスのインスタンスであるかのように動作します。

rspec ドキュメント: stub_modelmock_model

于 2014-02-21T20:27:59.917 に答える