我有一个方法像:

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)

但在这种情况下,mymethod不会被中断,用户会被创建。还有别的办法吗?

最佳答案

可能是这样的:

expect {
  method rescue nil
}.not_to change { User.count }

关于ruby-on-rails - 如何测试产生误差的方法的副作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33669619/

10-13 23:55