4

コントローラーの例でモデルをモックアップしているため、カバレッジに穴が開いています。コントローラが依存しているモデルのメソッドを削除しても、失敗は発生しません。

静的に型付けされた言語のTDDから来て、私は常に、速度を上げるためにデータベースにヒットするテスト対象のオブジェクトへの依存関係を模倣していました。上記の例では、モックが元のオブジェクトをサブクラス化したため、引き続き失敗します。動的言語でのベストプラクティスを探しています。

ありがとう。

アップデート:

これについて多くの相反する意見を得た後、それはあなたがどの哲学に賛成するかに要約されるようです。

Rspecコミュニティは、テスト対象のオブジェクトの分離を実現するために、依存関係を大幅にスタブ化するように見えます。受け入れテスト(従来は統合テストと呼ばれていました;)は、オブジェクトが実行時の依存関係で機能することを確認するために使用されます。

shoulda / Test :: Unitコミュニティは、可能な限りスタブを避けているようです。これにより、テスト対象のオブジェクトが実際にその依存関係で機能することをテストで確認できます。

このビデオはこれをうまく要約しています:http://vimeo.com/3296561

4

3 に答える 3

2

Mocha を使用している場合は、次のようにします。

Mocha::Configuration.prevent(:stubbing_non_existent_method)
于 2009-11-27T16:13:07.947 に答える
2

はい、コントローラーの例では、モデルをモックします。モデルの例で、モデルをテストします。

于 2009-11-27T13:52:16.290 に答える