0

我有这个控制器:

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

以及以下测试:

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

以及设置请求标头的辅助方法:

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

但是我的测试报告:

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

我在这里做错了什么?

4

2 回答 2

4

我为此找到了 xml_http_request 或别名 xhr

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
于 2013-08-01T22:47:02.723 回答
0

在TestCase 的一个实例中,#get 调用#process 调用@request.recycle!它将 @request.headers 设置为空哈希。要测试 js 响应,我认为您必须让测试使用 Selenium 或类似的东西启动浏览器。

于 2013-07-26T00:26:28.120 回答