我提出错误使用 raise(ConfigurationError.new(msg))
我尝试用rspec测试这个:
expect {
Base.configuration.username
}.to raise_error(ConfigurationError, message)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我该怎么测试呢?目标是匹配message.
hlc*_*lcs 14
您可以将错误消息与正则表达式匹配:
it { expect{ Foo.bar }.to raise_error(NoMethodError, /private/) }
Run Code Online (Sandbox Code Playgroud)
这将检查是否NoMethodError引发了private method消息而不是undefined method.
将是有用的,因为NoMethodError.new即使使用相同的错误消息也没有通过测试.
另一种解决方案是使用一个块,您可以在其中断言 的各种属性|error|。使用原始问题中的名称:
expect { Base.configuration.username }
.to(raise_error do |error|
expect(error).to be_a(ConfigurationError)
expect(error.message).to eq 'My configuration message'
end)
Run Code Online (Sandbox Code Playgroud)
确保使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6834 次 |
| 最近记录: |