method

assert_response

assert_response(type, message = nil)
public

Asserts that the response is one of the following types:

  • :success: Status code was 200
  • :redirect: Status code was in the 300-399 range
  • :missing: Status code was 404
  • :error: Status code was in the 500-599 range

You can also pass an explicit status number like assert_response(501) or its symbolic equivalent assert_response(:not_implemented). See <a href="/rails/ActionController/StatusCodes">ActionController::StatusCodes</a> for a full list.

2Notes

Good way to see what went wrong

szeryf · Mar 11, 20102 thanks

Use the +message+ parameter like that:

assert_response :success, @response.body

If this fails (the response isn't a success), it will display the response body along with the failure message, thus allowing you to quickly find out what went wrong. If the response is e.g. 500, there will probably be some exception stacktrace displayed in the body. And so on.

assert_response(:success) checks if the status code is in the range 200-299

hardbap · Nov 22, 2009

success? in ActionController::TestResponseBehavior is defined as:

def success?
(200..299).include?(response_code)
end