我正在尝试使用 rspec 测试我的康康康舞能力
但与测试特定用户可以做什么相反,我正在尝试测试用户不应该做什么。
现在,我有一个这样的上下文块:
context "for a manager" do
before do
@manager = FactoryGirl.build(:user, :manager)
@ability = Ability.new(@manager)
end
it "should not be able to create Questions" do
expect(@ability).not_to be_able_to(:create, Question.new)
end
it "should not be able to read Questions" do
expect(@ability).not_to be_able_to(:read, Question.new)
end
it "should not be able to update Questions" do
expect(@ability).not_to be_able_to(:update, Question.new)
end
it "should not be able to delete Questions" do
expect(@ability).not_to be_able_to(:destroy, Question.new)
end
end
这清楚地表明,类型的用户manager
不应该有任何形式的访问权限Question
模型的任何形式的访问权限。
有没有一种直接的方法可以将整个块写在一个it
块中,只有一个expect
?
我曾想过将其写成如下:
context "for a manager" do
before do
@manager = FactoryGirl.build(:user, :manager)
@ability = Ability.new(@manager)
end
it "should not be able to manage Questions" do
expect(@ability).not_to be_able_to(:manage, Question.new)
end
end
但我认为这可能不一定符合我的意图,因为该测试将通过与未授予该资源的能力之一一样多。
那么,简而言之,有没有直接的方法来测试这种场景呢?谢谢大家。