【问题标题】:Rspec failing on custom exceptionRspec 在自定义异常上失败
【发布时间】:2013-12-01 01:21:20
【问题描述】:

由于某种原因,我的 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

也不知道如何解决这个问题。

【问题讨论】:

    标签: ruby rspec rspec2


    【解决方案1】:

    您需要将代码放在一个块中,以便 RSpec 可以评估它,如下所示:

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

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

    【讨论】:

    • 完美,成功了。现在弄清楚为什么我将它作为参数
    • 当您测试的是值而不是行为时,您将被测对象作为参数传递。
    • 哦,我明白了:因为必须触发行为,并且需要块的上下文才能执行对象。有道理,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2012-02-27
    相关资源
    最近更新 更多