在进行Rails集成故事测试时如何处理AJAX重定向?

时间:2011-01-22 23:00:30

标签: 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 :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 >";

返回200代码,意思是

assert_response :redirect

失败。

如何在集成测试中处理AJAX重定向?

1 个答案:

答案 0 :(得分:0)

如果没有重定向,当然你将无法(成功)测试它。因此,请测试您正在做的事情:您希望响应为200,并且正文为Javascript代码段。或者也可以使用assert_template

如果你想测试你的Javascript-Login-Button是否真的摧毁了js主体以及浏览器对它的反应,你必须使用像Selenium这样的东西。