首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6-由于ActionPack .empty而导致测试失败?零:NilClass

Rails 6-由于ActionPack .empty而导致测试失败?零:NilClass
EN

Stack Overflow用户
提问于 2019-10-25 11:06:45
回答 2查看 68关注 0票数 0

最近,我将我的rails应用程序从6.0.0.beta3升级到6.0.0,使用_path_url路由的所有测试都有以下错误:

代码语言:javascript
复制
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>'

有人以前见过这个吗?也许我在升级的时候错过了配置?我的应用程序在浏览器中工作得很好,似乎受影响的是测试。

编辑

我正在运行的命令是:

代码语言:javascript
复制
BACKTRACE=YES rails test test/controllers/home_controller_test.rb

测试非常简单,在路线上总是失败:

代码语言:javascript
复制
require 'test_helper'

class HomeControllerTest < ActionDispatch::IntegrationTest

  test "should see home page" do
    get root_path
    assert_response :success
  end

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-28 15:30:35

好的。我终于找到了问题所在。在我的environment.rb文件中,我正在执行以下操作

代码语言:javascript
复制
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选项。

票数 1
EN

Stack Overflow用户

发布于 2019-10-27 00:53:38

尝试运行单个规范文件,而不是全部--如果我们不运行特定的测试,有时错误消息会使人困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58557355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档