RSpec 3 中等待或跳过的替代方法

Alternatives to pending or skip in RSpec 3

有些测试有时会通过,有时会失败。我想修复它们,但由于超出此问题范围的原因,我目前无法修复。在 RSpec 3 中是否有替代 pendingskip 的方法?

pending 不合适,因为从 RSpec 的当前版本开始,当测试通过时,RSpec 会告诉我他们通过了,因此不应该标记为待处理,并将构建标记为损坏。

skip 不合适。我只使用 skip 来避免导致套件崩溃的规范。如果测试始终停止失败,我想知道情况就是这样。

我想要运行测试的东西,显示它是否通过,但无论通过还是失败都不会导致构建中断。

添加此行为的额外 gem 是可以的。

没有内置任何东西,但自己做起来很简单:

module AllowFailure
  def allow_failure(reason)
    yield
  rescue Exception => e
    pending(reason)
    raise
  end
end

RSpec.configure do |config|
  config.include AllowFailure
end

然后用allow_failure(reason) { ... }包裹闪烁测试的主体。

(注意:上面的代码是现成的,我还没有尝试过,所以它可能不完全正确——但应该很接近)。