怎样使用 RSpec 的 should_raise 来处理任何一种异常?

11 浏览
0 Comments

怎样使用 RSpec 的 should_raise 来处理任何一种异常?

我想要做这样的事情:

some_method.should_raise 

我该怎么做?

some_method.should_raise exception

...不起作用。

admin 更改状态以发布 2023年5月21日
0
0 Comments

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_errorraise_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_errorraise_exception的别名。

文档:https://www.relishapp.com/rspec

RSpec 2:

RSpec 1:

0
0 Comments

expect { some_method }.to raise_error

RSpec 1 语法:

lambda { some_method }.should raise_error

请参见 文档(适用于 RSpec 1 语法)和 RSpec 2 文档 以获取更多信息。

0