如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时相关的知识,希望对你有一定的参考价值。

像许多非greenfeild项目一样,我到达了我的新工作,发现大多数测试都是使用功能规格而不是控制器/型号规格来执行的。当然,这意味着测试需要很长时间才能执行。

有没有办法我可以设置RSpec,以便我的功能测试最后运行 - 并且它们只会在所有其他测试首次成功时运行。我正在将应用程序迁移到控制器测试以加速执行,但如果模型验证存在问题或者我的某个控制器被破坏,则无需等待15分钟即可完成功能测试。

我想做什么?

(我现在在RubyMine中运行测试;但如果需要,我可以移动到rake spec)。

答案

虽然我自己并没有真正尝试过,但通过阅读文档看来它可以做你想做的事情。

将以下内容添加到spec_helper.rb以覆盖全局排序并强制rspec在首次失败时失败。

RSpec.configure do |config|
  config.register_ordering :global do |examples|
    feature, other = examples.partition do |example|
      example.metadata[:type] == :feature
    end
    other + feature
  end

  config.fail_fast = true
end

以上是关于如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时的主要内容,如果未能解决你的问题,请参考以下文章

Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD

在 Rails 的 rspec 中,我如何编写/编辑我的测试文件,以便特定上下文中的示例以设定的顺序运行?

如何测试 RSpec 中的 attr_accessible 字段

使用 rspec 进行 ActionMailer 测试 [关闭]

如何为需要用户身份验证的API构建Rspec请求测试

如何全局配置 RSpec 以保持打开“--color”和“--format specdoc”选项