Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 906
Teflon Ted Avatar asked Mar 01 '10 18:03

Teflon Ted


2 Answers

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.

like image 126
Alex Wayne Avatar answered Sep 17 '22 16:09

Alex Wayne


with rspec:

it "should render js" do   xhr :get, 'index'   response.content_type.should == Mime::JS end 

and in your controller action:

respond_to do |format|   format.js end 
like image 33
Steven Soroka Avatar answered Sep 20 '22 16:09

Steven Soroka