10

を使用してエラーを発生させましたraise(ConfigurationError.new(msg))

これをrspecでテストしようとしました:

expect {
  Base.configuration.username
}.to raise_error(ConfigurationError, message) 

しかし、これはうまくいきません。どうすればこれをテストできますか? 目標は一致することmessageです。

4

2 に答える 2

24

エラーメッセージを正規表現と一致させることができます:

it { expect{ Foo.bar }.to raise_error(NoMethodError, /private/) }

これは、メッセージ notNoMethodErrorで発生したかどうかをチェックします。private methodundefined method

NoMethodError.new同じエラーメッセージでもテストに合格しなかったので役に立ちます。

于 2016-10-22T16:58:35.830 に答える
4

rspec > 2.14.0 を使用していることを確認し、このコミットを見てください。

https://github.com/rspec/rspec-expectations/commit/7f02b503d5ae48d1141b6465acd0a7a4e1bb84dd

it "passes if an error instance is expected" do
  s = StandardError.new
  expect {raise s}.to raise_error(s)
end
于 2013-08-06T14:46:55.793 に答える