【问题标题】:How to setup RSpec to test features last and only if all other tests pass如何设置 RSpec 以最后测试功能,并且仅在所有其他测试通过时
【发布时间】:2018-01-03 05:45:32
【问题描述】:

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

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

我想做的事可能吗?

(我目前正在 RubyMine 中运行测试;但如果需要,我可以转到 rake spec)。

【问题讨论】:

  • 如何制作一个以正确顺序运行各个文件夹的自定义测试脚本?如果失败,您可以使用exit status 提前退出。

标签: ruby-on-rails ruby rspec tdd rspec-rails


【解决方案1】:

虽然我自己并没有真正尝试过,但阅读文档似乎可以做你想做的事。

将以下内容添加到您的 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

【讨论】:

  • 非常接近完美。谢谢。
  • 乐于助人。如果解决方案可以改进,请随时提供建议,我可以编辑它(或者您可以直接编辑它)。
猜你喜欢
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2019-04-04
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
相关资源
最近更新 更多