1

これは哲学的な問題かもしれませんが...

rspec と rails を使って作業しているので、モック オブジェクトとスタブを使用してコントローラー テストをモデルから分離することに慣れてきました。また、その逆も同様です。

とはいえ、すべてがうまくつながっているわけではないという余韻が残ります。

例として、次のようなコントローラーの仕様があるとします。

it "passes a list of awesome cheeses to the view" do
  Cheese.should_receive(:awesome).and_return( [ ] ) # one method name
  get 'show'
  assigns[:awesome_cheeses].should_not be_nil
end

そして、私の Cheese モデルの仕様は次のようになります。

it "should return a list of awesome cheeses" do
  Cheese.create!(:name => "American", :is_awesome => false)
  Cheese.create!(:name => "Gouda", :is_awesome => true)
  Cheese.awesome_cheeses.should_not be_nil # different method name!
end

これらの両方の仕様に合格した場合でも、最初の仕様でスタブ化したメソッドが、2 番目の仕様で動作することを確認したメソッドと同じ名前ではないため、アプリは壊れます。

さて、これに対する 1 つの答えは「統合テストが必要です」ですが、私の統合テストが非常に徹底していない限り、このようなエラーを見逃す可能性があります。

コントローラー テストで期待するメソッドと、モデル テストで実際にテストするメソッドを自動的に比較する方法はありますか?

4

1 に答える 1

0

これに役立つと主張するrspec-fireと呼ばれる Rspec の拡張機能があるようです。まだ試していませんが、他の人のためにここに記録したいと思います。

また、すばらしいタイトルを持っているので、この講演へのリンクも付けたいと思います: http://www.infoq.com/presentations/integration-tests-scam

于 2013-07-30T18:16:15.823 に答える