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

时间:2015-10-22 22:44:36

标签: ruby rspec rspec3

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

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

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

我喜欢运行测试的东西,显示它是否通过,但是无论是否通过,都不会导致构建被破坏。

添加此行为的其他gem是可以的。

1 个答案:

答案 0 :(得分:2)

没有内置任何东西,但自己这样做是微不足道的:

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) { ... }包裹闪烁测试的主体。

(警告:上面的代码是袖手旁观的,我没有尝试过,所以它可能不完全正确 - 但它应该很接近)。