Ken Obara
Posted on October 25, 2023
My Rails application works for API. When I tested the codes with Rspec, I got the following error.
$ bundle exec rspec
...
Failure/Error: render template: 'path/to/template'
...
Solutions
We can fix this problem by setting the request header for JSON. There are some solutions.
If we want to set it for each testing code, we can use format: :json
RSpec.describe MyController, type: :controller do
it 'my test' do
get :index, format: :json
expect(response).to have_http_status(:ok)
end
end
If we want to set it for all testing codes at once, we can change config settings.
# spec/rails_helper.rb or spec/spec_helper.rb
RSpec.configure do |config|
config.before(:each, type: :controller) do
request.env['CONTENT_TYPE'] = 'application/json'
request.env['HTTP_ACCEPT'] = 'application/json'
end
config.before(:each, type: :request) do
if defined?(headers)
headers['Content-Type'] = 'application/json'
headers['Accept'] = 'application/json'
end
end
end
💖 💪 🙅 🚩
Ken Obara
Posted on October 25, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
rails Extending the Ruby on Rails 8 authentication with OAuth sign in and the missing RSpec test suite
November 28, 2024