当rspec的语法配置时,如何编写expect {}.raise_error

ste*_*ang 3 ruby testing syntax rspec

我在rspec上有这个配置:

config.expect_with :rspec do |c|
  c.syntax = :should
end
Run Code Online (Sandbox Code Playgroud)

它使expect {}.to raise_error无效,我怎么能用should语法编写这个错误提升测试?

Nei*_*ter 8

我建议只有expect { code() }.to raise_error在您无法使用最新的RSpec 语法时才使用它:

lambda { foo( :bad_param ) }.should raise_error
Run Code Online (Sandbox Code Playgroud)

要么

lambda { foo( :bad_param ) }.should raise_error( ArgumentError )
Run Code Online (Sandbox Code Playgroud)

foo( :bad_param )用你希望断言的任何Ruby代码替换失败,以及ArgumentError你期望失败的任何异常类.