3

非常に古いプロジェクトの Rspec を使用してテストを書き始めました。私がテストしているモデルはすべて ActiveRecords (バックエンドは Oracle) です。実際のSQLを起動するよりも、モックとスタブ/フィクスチャ/ファクトリーガールを使用する必要があると言うブログをいくつか読みました。私は混乱しています。多くのメソッドをスタブ化し、多くのオブジェクトを作成する必要があります。これは良い習慣ですか?

4

2 に答える 2

7

モデルをテストするときは、テストをデータベースに統合することをお勧めします。つまり、ActiveRecord のものを模倣しようとせず、モデル オブジェクトだけを使用してください。FactoryGirl と Fabrication はどちらも実際のモデル オブジェクトを構築するための便利なショートカットであり、ActiveRecord モデルをテストする際のベスト プラクティスです。

これはレガシー コードであるため、古いコードをあまりモックしたりスタブ化したりしないことをお勧めします。分離は、各コンポーネントが分離してテストされた場合にのみ機能するためです。

ただし、TDD でコードを記述する場合、モック化とスタブ化には多くの利点があります。

  • きめの細かいテストを提供します (メソッドが壊れた場合、テストがどれかを教えてくれます)
  • テストがはるかに高速に実行されるため、TDD サイクルが短くなります
  • コードが他のオブジェクトとどのように相互作用するかについてアサーションを作成できます
  • 1 つのモデルを分離するために他のモデルを過度にスタブしてモックする必要がある場合は、通常、コードの結合が強すぎてリファクタリングに値するという良い兆候です。
于 2012-07-26T12:46:08.817 に答える
1

通常、スタブを使用すると、AR をロードせずにテストを実行でき、はるかに高速に実行されます。

個人的には、偽のデータをテストすることはテストではないと思います...おそらく、TDDを行う開発環境では...多分...しかし、テスト環境では、可能な限り本物に近いはずです。

もちろんこれは私の意見であり、現在の考え方ではないかもしれません。

于 2012-07-26T12:27:09.223 に答える