测试Rails中的默认范围

时间:2013-11-11 20:39:40

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

所有。 我在为默认范围的模型编写测试时遇到困难。我有一个属性为active_status的用户模型,可以由admin更改。我给用户默认范围active_status为true。 default_scope(:active_status => true)在管理页面中,我使用了unscoped,以便Admin可以看到所有用户。 怎么写这个测试? 感谢

2 个答案:

答案 0 :(得分:1)

听起来你需要做的就是为管理页面编写一个测试,创建一个非活动用户,并验证当加载管理页面时,会返回一个结果......我错过了什么?

答案 1 :(得分:1)

你可以这样做:

context "scopes" do
  describe "default_scope" do
    before do 
      create(:user, active_status: true) 
      create(:user, active_status: false)
    }

    context "with default scope" do
      subject { User.all }

      it { should have(1).user }
    end

    context "without default scope" do
       subject { User.unscoped.all }

      it { should have(2).users }
    end
  end
end

注意:我正在使用RSpecFactoryGirl

注意2:您可以将此视为反模式,因为default_scope是受保护的方法。但这就是你要求的。