RSpec:如何在所有其他规格之后运行功能规格

时间:2018-03-15 15:23:12

标签: ruby ruby-on-rails-3 rspec capybara

我们有一个相当复杂的集成规格设置,包括水豚和铬。这会导致功能规格变慢。

如果功能规格将在所有其他规格之后执行,那将是很好的。因为集成测试需要相当长的时间才能“启动”并找到一个简单的请求或单元测试之前会更快发现的错误。

问题:如何确保rspec在其他规范之后立即运行功能规范,但在不破坏simplecov的情况下将它们随机排序为种子?

1 个答案:

答案 0 :(得分:2)

RSpec允许设置自定义排序。在spec_helper.rb中输入后,将导致rspec在特征规范之前运行所有其他测试,并在不破坏simplecov的情况下由种子随机排序:

# Setup custom ordering to ensure that feature tests are executed after all other tests.
# Within this partition the tests are seed based randomly ordered.
config.register_ordering(:global) do |items|
  features, others = items.partition { |e| e.metadata[:type] == :feature }

  random_ordering = RSpec::Core::Ordering::Random.new(config)
  random_ordering.order(others) + random_ordering.order(features)
end

请确保在rspec调用或--order random文件中没有.rspec