怎样使用 RSpec 的 should_raise 来处理任何一种异常?
怎样使用 RSpec 的 should_raise 来处理任何一种异常?
我想要做这样的事情:
some_method.should_raise
我该怎么做?
some_method.should_raise exception
...不起作用。
admin 更改状态以发布 2023年5月21日
RSpec 2
expect { some_method }.to raise_error expect { some_method }.to raise_error(SomeError) expect { some_method }.to raise_error("oops") expect { some_method }.to raise_error(/oops/) expect { some_method }.to raise_error(SomeError, "oops") expect { some_method }.to raise_error(SomeError, /oops/) expect { some_method }.to raise_error(...){|e| expect(e.data).to eq "oops" } # Rspec also offers to_not: expect { some_method }.to_not raise_error ...
注意:raise_error
和raise_exception
是互换的。
RSpec 1
lambda { some_method }.should raise_error lambda { some_method }.should raise_error(SomeError) lambda { some_method }.should raise_error(SomeError, "oops") lambda { some_method }.should raise_error(SomeError, /oops/) lambda { some_method }.should raise_error(...){|e| e.data.should == "oops" } # Rspec also offers should_not: lambda { some_method }.should_not raise_error ...
注意:raise_error
是raise_exception
的别名。
文档:https://www.relishapp.com/rspec
RSpec 2:
- https://www.relishapp.com/rspec/rspec-expectations/v/2-13/docs/built-in-matchers/raise-error-matcher
RSpec 1:
expect { some_method }.to raise_error
RSpec 1 语法:
lambda { some_method }.should raise_error
请参见 文档(适用于 RSpec 1 语法)和 RSpec 2 文档 以获取更多信息。