最近,我将我的rails应用程序从6.0.0.beta3升级到6.0.0,使用_path或_url路由的所有测试都有以下错误:
HomeControllerTest#test_should_see_home_page:
NoMethodError: undefined method `empty?' for nil:NilClass
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:781:in `optimize_routes_generation?'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/routing/url_for.rb:220:in `optimize_routes_generation?'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:228:in `optimize_routes_generation?'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:198:in `call'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/routing/route_set.rb:329:in `block in define_url_helper'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/testing/integration.rb:404:in `public_send'
/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/actionpack-6.0.0/lib/action_dispatch/testing/integration.rb:404:in `method_missing'
/code/events/test/controllers/home_controller_test.rb:6:in `block in <class:HomeControllerTest>'有人以前见过这个吗?也许我在升级的时候错过了配置?我的应用程序在浏览器中工作得很好,似乎受影响的是测试。
编辑
我正在运行的命令是:
BACKTRACE=YES rails test test/controllers/home_controller_test.rb测试非常简单,在路线上总是失败:
require 'test_helper'
class HomeControllerTest < ActionDispatch::IntegrationTest
test "should see home page" do
get root_path
assert_response :success
end
end发布于 2019-10-28 15:30:35
好的。我终于找到了问题所在。在我的environment.rb文件中,我正在执行以下操作
App::Application.default_url_options = App::Application.config.action_mailer.default_url_options因为他们都使用相同的设置。我这样做是因为我在我的模型中使用路由帮助器(XX_path / XX_url)。我没有在我的action_mailer.default_url_options文件中设置environment/test.rb,这就是我的路线中断的原因。现在,在将env指定为测试之前,我将检查App::Application.default_url_options是否处于测试模式,然后自动使用作为url选项。
发布于 2019-10-27 00:53:38
尝试运行单个规范文件,而不是全部--如果我们不运行特定的测试,有时错误消息会使人困惑。
https://stackoverflow.com/questions/58557355
复制相似问题