Rspec在自定义异常时失败

时间:2013-11-18 01:21:06

标签: ruby rspec rspec2

出于某种原因,当我期望引发异常时,我的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

不确定如何解决此问题。

1 个答案:

答案 0 :(得分:6)

您需要将代码放在一个块中,以便RSpec可以对其进行评估,如:

expect { raise Test::BadError }.to raise_exception( Test::BadError )

当您将其作为参数传递时,错误会在RSpec执行任何操作之前引发。