我有,其对猫模型和不正确的输入的情况下,一些动作的方法引发了一个异常:我该如何“期待”在RSpec中引发异常的东西?
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
end
我想要做的是检查是否这种方法改变猫的状态,这样的:
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
it { expect { eat(what: nil) }.not_to change(cat, :status) }
end
问题是,因为eat(what: nil)
将引发异常,第二个it
将失败,无论如何。那么,是否可以忽略异常并检查一些情况?
我知道这是可以做到这样的:
it do
expect do
begin
eat(what: nil)
rescue
end
end.not_to change(cat, :status)
end
但它的方式太丑陋了。
“它{expect {eat(what:nil)rescue nil} .not_to change(cat,:status)}'? – awendt
@awendt很好,你可以发布它作为答案? – Andrew
在'Test/Unit'中,我认为有一个很好的断言,assert_raise。 –