を使用してコントローラーメソッドをスタブ化することになりましたany_instance
。
it "Should return 500 upon server error" do
UsersController.any_instance.stub(:index).and_raise(ArgumentError)
get "/users.json"
response.code.should eq("500")
response.body.should have_json_path("error")
end
ノート:
リクエスト仕様にコントローラーメソッドをスタブすることは意味がありません。しかし...この場合、私は受け入れ基準としてリクエストスペックスイートを使用しています。要件の1つは、すべてのエラーコードとメッセージがAPI設計と一致することを確認することでした。サーバーに、API設計で指定されたすべてのHTTPエラーコードを発生させることができました。エッジケースのみでしたinternal server error(i.e. 500)
。このエラーを発生させるようにコントローラーを誘導する手段がありませんでした。以来、私はエラー応答をテストしており、この応答は例外の場所とソースに依存しないため、スタブ化することにしました。