Search code examples
javascriptruby-on-railsresponsefunctional-testing

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


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!


Solution

  • 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.