在每种方法后检测Rspec测试失败

时间:2011-08-11 13:27:07

标签: ruby methods rspec

我正在尝试运行RSpec测试,我想检测after方法中的测试是否失败。我现在有这样的事情:

after(:each) do
  cc = ConnectController.new()
  cc.update(<TEST-SERVER-CONTROLLER>, <TC-RESULT-ID>, result?)    
end

正如您所看到的,result?函数是我需要替换的函数,用于检测测试是否失败,以及获取有关失败的测试的信息。

2 个答案:

答案 0 :(得分:17)

除了Daniel的回答之外,在Rspec3中删除了示例方法(有关详细信息,请参阅here)。

你必须做这样的事情:

after(:each) do |example|
  if example.exception
    # ...
  end
end

答案 1 :(得分:12)

编辑:这个答案仅对RSpec 2有效。对于RSpec 3,请参阅geekazoid的回答。

每个块之后在暴露example的类的上下文中运行,并且您可以通过exception example检查after(:each) do if example.exception != nil # Failure only code goes here end end 方法来检测失败:

{{1}}