0

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

4

2 回答 2

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 是受保护的方法。但这是你要求的。

于 2013-11-11T21:58:45.510 回答
1

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

于 2013-11-11T21:20:15.767 回答