Dhe*_*eer 3 ruby rspec ruby-on-rails rescue
我有这样的方法
def className
def method_name
some code
rescue
some code and error message
end
end
Run Code Online (Sandbox Code Playgroud)
那么,如何写下rspec来测试救援块..?
如果你想拯救,这意味着你期望some code引发某种异常.
您可以使用RSpec存根来伪造实现并强制发生错误.假设执行块包含可能引发的方法
def method_name
other_method_that_may_raise
rescue => e
"ERROR: #{e.message}"
end
Run Code Online (Sandbox Code Playgroud)
在您的规范中将存根挂钩到该方法
it " ... " do
subject.stub(:other_method_that_may_raise) { raise "boom" }
expect { subject.method_name }.to_not raise_error
end
Run Code Online (Sandbox Code Playgroud)
您还可以通过测试结果来检查救援处理程序
it " ... " do
subject.stub(:other_method_that_may_raise) { raise "boom" }
expect(subject.method_name).to eq("ERROR: boom")
end
Run Code Online (Sandbox Code Playgroud)
不用说,你应该提出一个错误,它可能是由真正的实现而不是一般错误引发的
{ raise FooError, "boom" }
Run Code Online (Sandbox Code Playgroud)
Error假设这是相关的,只能拯救它.
作为旁注,在Ruby中,您可以使用以下命令定义一个类:
class ClassName
Run Code Online (Sandbox Code Playgroud)
不
def className
Run Code Online (Sandbox Code Playgroud)
在你的例子中.
| 归档时间: |
|
| 查看次数: |
14354 次 |
| 最近记录: |