How can I assert my Ajax request and test the JSON output from Ruby on Rails functional tests?
Use ActionDispatch::TestResponse#parsed_body.
Example:
user = @response.parsed_body
assert_equal "Mike", user['name']
Use JSON.parse, which takes a string as input and returns a Ruby hash that the JSON represents.
Example:
user = JSON.parse(@response.body)
assert_equal "Mike", user['name']
                        Rails has JSON support built in:
def json_response
    ActiveSupport::JSON.decode @response.body
end
No need for a plugin
Then you can do something like this:
assert_equal "Mike", json_response['name']
                        If you are using RSpec, json_spec is worth a look
https://github.com/collectiveidea/json_spec
Also for short JSON responses you can simply match a string of the JSON to @response.body. This prevents having to rely on yet another gem.
assert_equal '{"total_votes":1}', @response.body
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With