所有。 我在为默认范围的模型编写测试时遇到困难。我有一个属性为active_status的用户模型,可以由admin更改。我给用户默认范围active_status为true。 default_scope(:active_status => true)在管理页面中,我使用了unscoped,以便Admin可以看到所有用户。 怎么写这个测试? 感谢
答案 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
注意:我正在使用RSpec和FactoryGirl。
注意2:您可以将此视为反模式,因为default_scope是受保护的方法。但这就是你要求的。