method

assert_response

rails latest stable - Class: ActionController::Assertions::ResponseAssertions

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v2.3.8) is shown here.

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 ActionController::StatusCodes for a full list.

Examples

  # assert that the response was a redirection
  assert_response :redirect

  # assert that the response code was status code 401 (unauthorized)
  assert_response 401

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