In Rails, how do you functional test a Javascript response format?

Teflon Ted picture Teflon Ted · Mar 1, 2010 · Viewed 14.9k times · Source

If your controller action looks like this:

respond_to do |format|
  format.html { raise 'Unsupported' }
  format.js # index.js.erb
end

and your functional test looks like this:

test "javascript response..." do
  get :index
end

it will execute the HTML branch of the respond_to block.

If you try this:

test "javascript response..." do
  get 'index.js'
end

it executes the view (index.js.erb) withOUT running the controller action!

Answer

Alex Wayne picture Alex Wayne · Mar 1, 2010

Pass in a :format with your normal params to trigger a response in that format.

get :index, :format => 'js'

No need to mess with your request headers.