1

Rspec を使用して、キャッチされる例外の期待値を設定する方法はありますか? MyException が発生することを確認したいのですが、例外をキャッチしているため、Rspec はそれが発生したことを認識していないようです。

begin
  if success
    do good stuff
  else
    raise MyException.new()
  end
rescue MyException => e
  clean up
end

次のようなことをいくつか試しましたが、成功しませんでした。MyException.should_receive(:new)Kernel.should_receive(:raise).with(MyException)

4

3 に答える 3

1

必要なことを行う方法を見つけました。

class MyClass
  def my_method
    begin
      if success
        do good stuff
      else
        raise MyException.new
      end
    rescue MyException => e
      # clean up
    end
  end
end

describe MyClass do
  it "Expects caught exception" do
    my_instance = MyClass.new()
    my_instance.should_receive(:raise).with(any_instance_of(MyException))
    my_instance.my_method()
  end
end

他の提案をありがとう。

于 2014-02-28T17:54:10.173 に答える
0

私は以下のようにします:

RSpec.describe "matching error message with string" do
  it "matches the error message" do
    expect { raise StandardError, 'this message exactly'}.
      to raise_error('this message exactly')
  end
end

ドキュメントからそのままコピーRspec

于 2014-02-28T00:27:31.487 に答える