当运行parallel_rspec spec时,控制器随机失败,有任何解决方案。
在Gemfile中
group :development, :test do
gem 'parallel_tests'
end
我的规格执行如下:
name@root:/project# parallel_rspec spec/controllers/
4 processes for 21 specs, ~ 5 specs per process
Randomized with seed 3503
Randomized with seed 41377
0/62 |> | ETA: ??:??:??
Randomized with seed 43603
0/50 |> | ETA: ??:??:??
Randomized with seed 61169
3/62 |==> | ETA: 00:08:03
1) Admin::ReportingsController when signed-in non-admin GET #instance_reports redirects to root_url
Failure/Error: expect( response ).to redirect_to root_url
Expected response to be a redirect to <http://xxx/> but was a redirect to <http://yyyy>.
Expected "http://xxxx/" to be === "http://xxxx/code".
# ./spec/support/functions.rb:12:in `expect_root_redirect'
# ./spec/controllers/admin/reportings_controller_spec.rb:25:in `block (4 levels) in <top (required)>'
# ./spec/support/factory_bot.rb:18:in `block (3 levels) in <top (required)>'
# /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/generic/base.rb:16:in `cleaning'
# /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/base.rb:100:in `cleaning'
# /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/configuration.rb:86:in `block (2 levels) in cleaning'
# /usr/local/bundle/gems/database_cleaner-1.7.0/lib/database_cleaner/configuration.rb:87:in `cleaning'
# ./spec/support/factory_bot.rb:17:in `block (2 levels) in <top (required)>'
类似这样的代码会随机失败。
如果我们使用以下命令运行,则可以正常工作。
rspec spec/controllers
注意:
- 执行时只连接单个数据库。
- 除控制器外,一切正常。
- 大多数与JSON相关的条件均失败。
bundle exec rspec --seed 61169
或将61169
替换为任何失败的种子编号。Rspec 将尝试找到导致套件失败的最小集合,有可能是一个测试设置了环境变量,而另一个测试意外地使用了它。 - Danilo Cabello