Ruby on rails 在进行Rails集成故事测试时,如何处理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

我试图弄清楚如何运行基于故事的集成测试,以及在“故事”中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 :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