我提出了一个错误使用raise(ConfigurationError.new(msg))
我试图用 rspec 对此进行测试:
expect {
Base.configuration.username
}.to raise_error(ConfigurationError, message)
但这不起作用。我该如何测试呢?目标是匹配message
。
您可以将错误消息与正则表达式匹配:
it { expect{ Foo.bar }.to raise_error(NoMethodError, /private/) }
这将检查是否使用消息 notNoMethodError
引发。private method
undefined method
将很有用,因为NoMethodError.new
即使有相同的错误消息也没有通过测试。
确保您使用的是 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