Testing if a controller renders a JS Template

I have this controller:

class UsersController < ApplicationController
  def enable_password_change
respond_to do |format|
      format.js {
        render :layout => false
      }
    end
  end
end

And the following test:

test "should render js to show the change password form" do
  sign_in_user
request_javascript
get :  enable_password_change
assert_template :  enable_password_change
assert_response :ok
end

And the helper method to set the request headers:

def request_javascript
@request.headers["Accepts"] = "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
end

However my test reports:

Finished tests in 0.942294s, 7.4287 tests/s, 15.9186 assertions/s.

1) Error:
UsersControllerTest#test_should_render_js_to_show_the_change_password_for:
ActionController::UnknownFormat: ActionController::UnknownFormat
app/controllers/users_controller.rb:9:in `enable_password_change'
test/controllers/users_controller_test.rb:14:in `block in <class:UsersControllerTest>
'
7 tests, 15 assertions, 0 failures, 1 errors, 0 skips

What am I doing wrong here?

P.S. Also posted on ruby on rails - Testing if a controller renders a JS Template - Stack Overflow

I found the the xml_http_request or alias xhr for that

test "should render js to show the change password form" do
   sign_in_user
xhr :get, :
   enable_password_change
assert_template :   enable_password_change
assert_response :   ok
assert assigns(:merchant_user)
end

Joao,

I am not sure you getting testing right! everytime you find something like this that looks hard to test, maybe you should rethink your tests.

I Would for example on controller testing, which is functional, be more worried to test, if the function did what it was supposed to and on the features/request tests check if my applications is working correctly with js.

I am not sure for this example but just a little tip from what I have seen in testing before!

all the best,

Andre