コントローラーの仕様内で、有効なものをスタブアウトしていますか? いくつかのルーティング テストでは、(Ryan Bates nifty_scaffold に基づく) 次のように:-
it "create action should render new template when model is invalid" do
Company.any_instance.stubs(:valid?).returns(false)
post :create
response.should render_template(:new)
end
コントローラーを単独でテストする場合、これは問題ありません。モデルスペックには次のものもあります
it "is valid with valid attributes" do
@company.should be_valid
end
繰り返しますが、これは単独でテストするとうまく機能します。モデルとコントローラーの両方で spec を実行すると問題が発生します。モデル テストは、有効な?として常に失敗します。メソッドはスタブ化されています。コントローラー テストが破棄されたときに、any_instance のスタブを削除する方法はありますか。
テストをアルファベットの逆順で実行して、コントローラーの前にモデル テストが実行されるようにすることで問題を回避しましたが、テストがシーケンスに依存するのは本当に好きではありません。