Ruby on rails 在进行Rails集成故事测试时,如何处理AJAX重定向?
我试图弄清楚如何运行基于故事的集成测试,以及在“故事”中AJAX重定向出现的位置 简单的登录示例:我使用Ruby on rails 在进行Rails集成故事测试时,如何处理AJAX重定向?,ruby-on-rails,ajax,redirect,integration-testing,Ruby On Rails,Ajax,Redirect,Integration Testing,我试图弄清楚如何运行基于故事的集成测试,以及在“故事”中AJAX重定向出现的位置 简单的登录示例:我使用 def user.logs_in(email, pwd) get root_path assert_response :success assert_template 'index' post :post, session_path, :email => email, :pwd => pwd assert_response :redi
def user.logs_in(email, pwd)
get root_path
assert_response :success
assert_template 'index'
post :post, session_path, :email => email, :pwd => pwd
assert_response :redirect
assert_redirect_to backend_path
follow_redirect!
assert_response :success
assert_template 'index'
assert session[:user_id]
end
不幸的是,登录过程是基于AJAX的,而不是返回301重定向
document.location.href = "<%= backend_path >";
失败了
如何在集成测试中处理AJAX重定向?如果没有重定向,当然您将无法成功测试它。因此,测试您正在做什么:您希望响应是200,而主体是Javascript代码段。或者也可以使用assert_模板 如果您想测试您的Javascript登录按钮是否实际评估js主体,以及浏览器如何对此做出反应,您必须使用类似Selenium的东西
assert_response :redirect