我有一个方法可以对 Cat 模型执行一些操作,如果输入不正确会引发异常:
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
但是实在是太丑了。