In Rails 5, the preferred base class for testing controllers is ActionDispatch::IntegrationTest
.
If you have an API that receives parameters as JSON request bodies, here are some helper methods to facilitate testing:
class ActionDispatch::IntegrationTest
def put_json(path, obj)
put path, params: obj.to_json, headers: { 'CONTENT_TYPE' => 'application/json' }
end
def post_json(path, obj)
post path, params: obj.to_json, headers: { 'CONTENT_TYPE' => 'application/json' }
end
end
Sample usage:
class MyControllerTest < ActionDispatch::IntegrationTest
test 'creating a foo' do
post_json foos_path, foo: { attr_1: 'bar', attr_2: 'baz' }
assert_response :created
end
end
👍 to
as: :json
.I have been searching for this for a long time!
👍 @mrhead!!