Ruby on rails http响应的shoulda、rspec、guard、spork问题

Ruby on rails http响应的shoulda、rspec、guard、spork问题,ruby-on-rails,testing,rspec,shoulda,Ruby On Rails,Testing,Rspec,Shoulda,你好,谢谢你的耐心! 我的rails应用程序使用rspec和shoulda的组合来运行测试。这些测试是自动进行的,没有人看管,也没有人看管。我的一个控制器测试看起来像 它{应该以(:success)回应} 当运行测试时,我得到 预计响应为200,但为301 通过浏览手动测试&wget一切正常,页面正确响应,状态代码为200。由于我对rails测试非常陌生,可能我不了解测试目前是如何运行的。它们是如何实施的?环境“测试”的目的是什么?是否有某种Web服务器在后台运行以运行测试?显然存在某种非通缉性

你好,谢谢你的耐心! 我的rails应用程序使用rspec和shoulda的组合来运行测试。这些测试是自动进行的,没有人看管,也没有人看管。我的一个控制器测试看起来像

它{应该以(:success)回应}

当运行测试时,我得到

预计响应为200,但为301

通过浏览手动测试&wget一切正常,页面正确响应,状态代码为200。由于我对rails测试非常陌生,可能我不了解测试目前是如何运行的。它们是如何实施的?环境“测试”的目的是什么?是否有某种Web服务器在后台运行以运行测试?显然存在某种非通缉性重定向。 提前谢谢

编辑:更多来源 控制器:

 class PlansController < ApplicationController
   def index
     @plans=Plan.all
   end
    ... more methods ...
 end

您在
get:index
上下文的before块中缺少一个
:each
,因此您永远不会调用index操作

更新如下:

context " get :index" do
  before(:each) do 
    get :index 
  end

  it { should respond_with(:success) }
end

你没有任何重定向吗?目前没有。routes.rb只是声明
resources:plan
,并有一个别名,如
match'/pricing'=>“plan#index'
。我之前提到的测试是在PlansController类的方法上进行的。重定向通常发生在Controller中,因为在执行此操作之前,您有一些身份验证筛选器,并且您没有在specediting问题上定义它以显示更多代码,无论如何,我的控制器中没有任何重定向atm。
before do
与rspec中的
before:each do
相同。只是为了方便。
context " get :index" do
  before(:each) do 
    get :index 
  end

  it { should respond_with(:success) }
end