升级到 Rails 5:路由助手未在助手规范中定义

Upgrade to Rails 5: Route helpers are not defined in helper specs

我目前正在从 rails 4.2 升级到 rails 5.0 并设法 fix/update 除了一堆 rspec 测试之外的大部分内容。

当我 运行 我的套件带有 rspec spec/rake parallel:spec 时,我遇到类似以下的间歇性测试失败:

在测试失败之前打印 Rails.application.routes.url_helpers,并且没有路由。

这主要在我的 helpers & mailers 文件夹中。当我 运行 有 rspec spec/helpers 的助手时,他们都通过了。非常奇怪,因为一些带有路由路径的助手通过了,而另一些则没有。

看了这个,https://github.com/rspec/rspec-rails/issues/1644, rails-controller-testing is not the issue. This一点帮助都没有。

我正在使用

我为此花了很多时间,终于找到了罪魁祸首。我首先从 specs/ 文件夹中一个一个地删除文件夹,然后 --format documentation 我设法将其缩减为一个文件,当它在套件中的 helpers 之前执行时,它撞坏了他们。

那个旧测试

before(:each) do
  routes.draw { get 'search' => 'warden#search' }
end

并通过添加

修复
  after do  
    Rails.application.reload_routes!
  end

我最终改变了整个测试,最终只是为了摆脱 reload_routes!,因为它看起来更像是一种破解而不是修复。