我使用raise(ConfigurationError.new(msg))
我尝试用rspec测试这个:
expect {
Base.configuration.username
}.to raise_error(ConfigurationError, message)
但这不起作用。我该怎么测试呢?目标是匹配message
。
答案 0 :(得分:9)
您可以将错误消息与正则表达式匹配:
it { expect{ Foo.bar }.to raise_error(NoMethodError, /private/) }
这会检查NoMethodError
邮件是否private method
而非undefined method
。
会很有用,因为即使出现相同的错误消息,NoMethodError.new
也没有通过测试。
答案 1 :(得分:5)
确保您使用的是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