我如何使用rspec进行测试?

时间:2013-03-09 05:21:50

标签: ruby-on-rails ruby ruby-on-rails-3 testing rspec

我正在使用Sorcery gem进行用户注册/登录。

此gem的一个功能是要验证的任何控制器上的require_login before_filter。

我已经为我的应用登录后创建了dashboard命名空间。例如/dashboard/reports/dashboard/employees等。

路由文件:

# Dashboard                                                
namespace :dashboard do                                      
  # Recent Activity                                          
  get '' => redirect('/dashboard/recent-activity')           
  get 'recent-activity' => 'activities#index', :as => 'root' 
  # Other dashboard controllers and actions
end  

我将before_filter解压缩到它自己的控制器中,名为:

“应用程序/控制器/仪表板/ base_controller.rb”

class Dashboard::BaseController < ApplicationController

  before_filter :require_login

end

我想做的是在某种测试中100%确定我在仪表板文件夹(或仪表板命名空间)中创建的任何新控制器都继承自Dashboard::BaseController

例如我的活动控制器:

class Dashboard::ActivitiesController < Dashboard::BaseController

我不想在几个月内创建控制器,并且不小心让它从ApplicationController继承,但仍然会有登录功能。

我正在使用RSpec

1 个答案:

答案 0 :(得分:1)

不能完全相信我自己的眼睛,我自己解决了这个问题。

require 'spec_helper'

describe Dashboard::BaseController do

  it "is the superclass of every dashboard namespaced controller" do
    Rails.application.eager_load!
    ApplicationController.descendants.each do |controller|
      if controller.to_s.include?("Dashboard::") && controller.to_s != "Dashboard::BaseController"
        expect(controller.superclass.to_s).to eq("Dashboard::BaseController")      
      end
    end
  end

end