出于某种原因,当我期望引发异常时,我的Rspec测试是否失败。我正在运行Rspec v2.14.1,这是一个自定义的Ruby应用程序,not
一个Rails应用程序。
示例代码:
# test.rb
class Test
class BadError < Exception ; end
end
规范文件:
# test_spec.rb
require 'spec_helper'
require 'test'
describe Test do
it 'raises an exception' do
expect( raise Test::BadError ).to raise_exception( Test::BadError )
end
end
结果:
F
Failures:
1) Test raises an exception
Failure/Error: expect( raise Test::BadError ).to raise_exception( Test::BadError )
Test::BadError:
Test::BadError
# ./spec/test_spec.rb:6:in `block (2 levels) in <top (required)>'
Finished in 0.0005 seconds
1 example, 1 failure
不确定如何解决此问题。
答案 0 :(得分:6)
您需要将代码放在一个块中,以便RSpec可以对其进行评估,如:
expect { raise Test::BadError }.to raise_exception( Test::BadError )
当您将其作为参数传递时,错误会在RSpec执行任何操作之前引发。