Ruby on rails 如何使用rspec测试控制器中的所有路由

Ruby on rails 如何使用rspec测试控制器中的所有路由,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,我试图限制我的应用程序中的一些控制器在执行任何操作之前需要登录。我知道如何实现它,但不知道如何用rspec为它编写好的测试 例如,如果我想限制我的用户控制器的每个操作要求登录,我可以进行如下测试: 请描述您的授权 describe "for non-signed-in users" do let(:user) { FactoryGirl.create(:user) } describe "in the Users controller" do describe "visiti

我试图限制我的应用程序中的一些控制器在执行任何操作之前需要登录。我知道如何实现它,但不知道如何用rspec为它编写好的测试

例如,如果我想限制我的用户控制器的每个操作要求登录,我可以进行如下测试:

请描述您的授权

describe "for non-signed-in users" do
  let(:user) { FactoryGirl.create(:user) }

  describe "in the Users controller" do

    describe "visiting the index page" do
      before { visit users_path }
      it { should have_selector('title', text: 'Log In') }
    end

    describe "visiting the edit page" do
      before { visit edit_user_path(user) }
      it { should have_selector('title', text: 'Log In') }
    end

    describe "submitting to the update action" do
      before { put user_path(user) }
      specify { response.should redirect_to(login_path) }
    end

     describe "submitting a DELETE request to the Users#destroy action" do
      before { delete user_path(user) }
      specify { response.should redirect_to(root_path) }        
    end

....etc.....

  end
end

是否需要为每个要测试的控制器指定所有7条restful路由?看起来效率很低。在访问之前,有没有什么方法可以说任何用户的路由响应应该重定向到登录路径?

我在尝试列出并测试所有应用程序路由是否有500个错误时也有类似的问题,我不想手动逐个添加我有150个左右的路由

我镜像了命令中的代码,并使用Rails.application.routes.routes来列出它们

包装器提供了一种简单的方法来检查路由的控制器、动词和动作。 从这里开始,您只需过滤您想要检查的路由,并在每个路由上运行测试时对其进行迭代

上下文“所有路由”都可以 让:所有的应用程序路径都可以 Rails.application.routes.routes.collect do|route| ActionDispatch::Routing::RouteWrapper.new route 结束。拒绝&:内部? 终止 上下文“在用户控制器中”执行 让:用户\控制器\路由做什么 所有|app|routes.select{| route | route.controller=='users'} 终止 它“所有路由都应该重定向到登录”do 用户(u控制器)路由。每个do |路由| 开始 使用路由名称重建路径
我没有测试下面的行,我一直在使用get“/”我只测试我的before\u filter我该怎么做?对不起,我对测试很陌生。。。