How to test JSON result from Ruby on Rails functional tests?
In Rails >= 5
Use ActionDispatch::TestResponse#parsed_body
.
Example:
user = @response.parsed_bodyassert_equal "Mike", user['name']
In Rails up to 4.x
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.bodyend
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