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

Leo*_*Leo 21 ruby methods rspec

我正在尝试运行RSpec测试,我想检测该after方法中的测试是否失败.我现在有类似的东西:

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

如您所见,该result?功能是我需要替换的,检测测试是否失败,以及获取有关失败的测试的信息.

gee*_*oid 21

除了Daniel的答案之外,在Rspec3中删除了示例方法(有关详细信息,请参阅此处).

你必须做这样的事情:

after(:each) do |example|
  if example.exception
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)


Dan*_*ans 13

编辑:这个答案仅适用于RSpec 2.对于RSpec 3,请参阅geekazoid的答案.

每个块之后运行在暴露的类的上下文中example,您可以通过检查exception方法来检测故障example:

after(:each) do
  if example.exception != nil
    # Failure only code goes here
  end
end
Run Code Online (Sandbox Code Playgroud)