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

发布于 2024-11-29 05:37:17 字数 293 浏览 1 评论 0原文

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

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

如您所见,我需要替换 result? 函数,以检测测试是否失败,并获取有关失败测试的信息。

I am trying to run an RSpec test, and I want to detect if the test failed in the after method. I have something like this right now:

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

As you can see, the result? function is what I need to replace, to detect if the test fails or not, and to also get information about the test that failed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

少女的英雄梦 2024-12-06 05:37:17

除了丹尼尔的回答之外,在 Rspec3 中,示例方法被删除(参见 此处了解更多信息)。

你必须做这样的事情:

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

In addition to Daniel's answer, in Rspec3 the example method was deleted (see here for more info).

You will have to do something like this:

after(:each) do |example|
  if example.exception
    # ...
  end
end
枕梦 2024-12-06 05:37:17

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

After 每个块在公开 example 的类的上下文中运行,您可以通过检查 example 上的 exception 方法来检测失败,如下所示:

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

EDIT: this answer is only valid for RSpec 2. for RSpec 3 see geekazoid's answer.

The after each block runs in the context of class which exposes example and you can detect failures by checking the exception method on example thusly:

after(:each) do
  if example.exception != nil
    # Failure only code goes here
  end
end
森末i 2024-12-06 05:37:17

我正在寻找如何检查 after(:context) / after(:all) 块中组中的所有示例是否成功。这是我想出的:

after(:all) do |example_group|
  all_groups = example_group.class.descendants
  failed_examples = all_groups.map(&:examples).flatten.select(&:exception)

  if failed_examples.empty?
    # runs only if there are no failures
    do('something')
  end
end

I was looking for how to check if success for all examples in a group in a after(:context) / after(:all) block. Here's what I came up with:

after(:all) do |example_group|
  all_groups = example_group.class.descendants
  failed_examples = all_groups.map(&:examples).flatten.select(&:exception)

  if failed_examples.empty?
    # runs only if there are no failures
    do('something')
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文