Integration test methods such as Integration::RequestHelpers#get and Integration::RequestHelpers#post return objects of class TestResponse, which represent the HTTP response results of the requested controller actions.

See Response for more information on controller response objects.

Methods

Class Public methods

from_response(response)

📝 Source code
# File actionpack/lib/action_dispatch/testing/test_response.rb, line 14
    def self.from_response(response)
      new response.status, response.headers, response.body
    end
🔎 See on GitHub

Instance Public methods

parsed_body()

Returns a parsed body depending on the response MIME type. When a parser corresponding to the MIME type is not found, it returns the raw body.

Examples

get "/posts"
response.content_type         # => "text/html; charset=utf-8"
response.parsed_body.class    # => Nokogiri::HTML5::Document
response.parsed_body.to_html  # => "<!DOCTYPE html>\n<html>\n..."

assert_pattern { response.parsed_body.at("main") => { content: "Hello, world" } }

response.parsed_body.at("main") => {name:, content:}
assert_equal "main", name
assert_equal "Some main content", content

get "/posts.json"
response.content_type         # => "application/json; charset=utf-8"
response.parsed_body.class    # => Array
response.parsed_body          # => [{"id"=>42, "title"=>"Title"},...

assert_pattern { response.parsed_body => [{ id: 42 }] }

get "/posts/42.json"
response.content_type         # => "application/json; charset=utf-8"
response.parsed_body.class    # => ActiveSupport::HashWithIndifferentAccess
response.parsed_body          # => {"id"=>42, "title"=>"Title"}

assert_pattern { response.parsed_body => [{ title: /title/i }] }

response.parsed_body => {id:, title:}
assert_equal 42, id
assert_equal "Title", title
📝 Source code
# File actionpack/lib/action_dispatch/testing/test_response.rb, line 50
    def parsed_body
      @parsed_body ||= response_parser.call(body)
    end
🔎 See on GitHub

response_parser()

📝 Source code
# File actionpack/lib/action_dispatch/testing/test_response.rb, line 54
    def response_parser
      @response_parser ||= RequestEncoder.parser(media_type)
    end
🔎 See on GitHub