Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby RSpec:如何在所有其他规范之后运行功能规范_Ruby_Ruby On Rails 3_Rspec_Capybara - Fatal编程技术网

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

Ruby RSpec:如何在所有其他规范之后运行功能规范,ruby,ruby-on-rails-3,rspec,capybara,Ruby,Ruby On Rails 3,Rspec,Capybara,我们有一个相当复杂的集成规范设置与水豚和铬。这会导致功能规格缓慢 如果功能规范在所有其他规范之后执行,那就太好了。因为集成测试需要相当长的时间才能“引导”并找到一个bug,而以前一个简单的请求或单元测试会更快地发现这个bug 问题:如何确保rspec在其他规范之后运行功能规范,但在不破坏simplecov的情况下将其随机排序?rspec允许设置自定义排序。spec\u helper.rb中的以下条目将导致rspec在功能规范之前运行所有其他测试,并按种子随机排序,而不会破坏simplecov:

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

如果功能规范在所有其他规范之后执行,那就太好了。因为集成测试需要相当长的时间才能“引导”并找到一个bug,而以前一个简单的请求或单元测试会更快地发现这个bug


问题:如何确保rspec在其他规范之后运行功能规范,但在不破坏simplecov的情况下将其随机排序?rspec允许设置自定义排序。
spec\u 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呼叫或
.rspec
文件中的
--order random
问题和答案不在同一秒?是的,当您打开SO问题时,您可以激活复选框“回答您自己的问题”,并提供问题的正确答案:)请看,您当然可以这样做。然而,当你使用随机排序时,你可能会隐藏某些与排序相关的错误。实际上,随机排序并没有被使用。示例仍然是随机排序的,但是集成测试在其他测试之后运行。使用database cleaner和capybara,由于capybara生成了自己的服务器,因此不应该存在任何与订单相关的错误。