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

时间:2018-01-03 05:45:32

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

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

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

我想做的是什么?

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

1 个答案:

答案 0 :(得分:3)

虽然我自己并没有真正尝试过这个问题,但通过阅读文档,可以按照自己的意愿行事。

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