Ruby on rails 测试JavaScript重定向时遇到的问题

Ruby on rails 测试JavaScript重定向时遇到的问题,ruby-on-rails,ruby,ruby-on-rails-3,rspec,rspec2,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,Rspec2,我正在使用RubyonRails3.1.0和RSpecRails2gem。我想测试JavaScript重定向,但在这方面我遇到了一些麻烦 在我的控制器文件中,我有: respond_to do |format| format.js { render :js => "window.location.replace('#{users_url}');" } end it "should redirect" do xhr :post, :create response.should

我正在使用RubyonRails3.1.0和RSpecRails2gem。我想测试JavaScript重定向,但在这方面我遇到了一些麻烦

在我的控制器文件中,我有:

respond_to do |format|
  format.js { render :js => "window.location.replace('#{users_url}');" }
end
it "should redirect" do
  xhr :post, :create
  response.should redirect_to(users_url)
end
在我的等级库文件中,我有:

respond_to do |format|
  format.js { render :js => "window.location.replace('#{users_url}');" }
end
it "should redirect" do
  xhr :post, :create
  response.should redirect_to(users_url)
end
如果我运行规范,我会得到以下结果:

 Failure/Error: response.should redirect_to(users_url)
   Expected response to be a <:redirect>, but was <200>
我明白了

规范成功通过,但太多了!也就是说,我还可以声明以下内容,规范将意外通过:

response.should render_template(:js => "every_thing")

我也看到了,并且建议的解决方案是有效的,但我认为这是实现我目标的最佳解决方案。

RSpec控制器规范使用不执行Javascript的rack_测试驱动程序。要测试使用Javascript进行重定向的页面,您应该查看另一个驱动程序

使用SeleniumWebDriver可以很好地做到这一点。RSpec请求规范替换那些依赖Javascript的测试的控制器规范

response.should render_template(:js => "every_thing")