[RSpec] ControllerのSpecでHTTPステータスコードの値をテストする
ControllerのSpecで、HTTPステータスコードの値をテストする方法をメモ。
当方の環境は以下のとおり。
- Rails 3.2.1
- RSpec 2.11.0
方法はとてもカンタンで、以下のサンプルコードのように書けばいいです。強調されている行でHTTPステータスコードの値をチェックしています。
1 2 3 4 5 6 7 8 9 10 11 12 |
describe UsersController do ### (略) ### describe "GET show" do context "when the specified user is not found" do ### (略) ### it "send response with status code 404" do get :show, :id => 9999 response.response_code.should == 404 end end end end |
少し解説すると、上のコードはUsersController
のshow
アクションをテストしているSpecになります。
(仮にid:9999のUserが存在しないとして、)わざと存在しないIDのUser情報を取得した場合に、きちんと404 Not found
がHTTPレスポンスのステータスコードとして返ってくるかを見ています。
response.response_code
にHTTPステータスコードが含まれているので、その値を検証してやればOK。カンタンですね!
今とあるWeb APIを実装中なのですが、ステータスコードもきちんとテストしておきたいなと思ったので、調べてみたのでした。
それでは!