我有一个方法像:
def method
# ..
begin
some_invokation
rescue StandardError
# some_other_stuff
raise
end
# ..
User.create!
end
现在我可以测试此方法是否引发异常:
expect { method }.to raise_error(StandardError)
但我也希望测试用户是否未创建。
expect { method }.not_to change { User.count }
它不起作用。它表明引发了异常。我试着模仿raise调用:
allow_any_instance_of(described_class).to receive(:raise)
但在这种情况下,my
method
不会被中断,用户会被创建。还有别的办法吗? 最佳答案
可能是这样的:
expect {
method rescue nil
}.not_to change { User.count }
关于ruby-on-rails - 如何测试产生误差的方法的副作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33669619/