【问题标题】:Rails integration test failing on Class.count - nil.nill.NILRails 集成测试在 Class.count 上失败 - nil.nill.NIL
【发布时间】:2016-02-17 11:59:21
【问题描述】:

ENV=发展

我遇到了一个对我来说毫无意义的奇怪错误

当我使用 Myclass.count 运行集成测试时出现错误

错误[“test_micropost_interface”,MicropostsInterfaceTest,2016-01-20 23:50:17 +0000] test_micropost_interface#MicropostsInterfaceTest (1453333817.28s) ActionView::Template::Error: ActionView::Template::Error: undefined method `count' for nil:NilClass

代码是并且正在工作我确定!

    assert_no_difference 'Micropost.count' do
     post microposts_path, micropost: { content: "" }
    end

我运行了一个控制台,Micropost.count 返回 32

这可能是固定装置没有传播的问题吗? 我很难过 :( 就去哪里看的建议!

【问题讨论】:

  • 该错误表明您错误地调用 .count 的东西在视图本身中 - 您的问题表明您认为测试中的 Micropost.count 导致错误。可能值得澄清。
  • 我调用的“东西”是 Microposts 类,它在 Microposts 集成测试中,并且在控制台中以相同的语法正常运行我想知道其他人是否经历过这个或设法解决这个问题?它最有可能是我在某个地方的错误 - 但我不确定在哪里看
  • 你做了 rake:db:test:prepare 吗?
  • 不-我只是查了一下- rake:db:test:prepare 我从来不知道它的存在!我马上试试
  • 好吧,我已经运行了它,它什么也没报告,当我进行 rake 测试时,它仍然在将 Micropost 计数为 Nilclass 时抛出错误

标签: ruby-on-rails integration-testing


【解决方案1】:

我认为错误来自您的一种观点,而不是测试本身的问题。

可能值得删除回溯上的静默,看看您是否得到更详细的错误,希望能更准确地指出错误。

config/initializers/backtrace_silencers.rb 中,您可以取消注释最后一行以获取rails 以显示整个错误。我经常把这行改成:

Rails.backtrace_cleaner.remove_silencers! if Rails.env.test?

在我运行测试时获得完整的回溯。

【讨论】:

  • 我这样做了,它只是返回了大量的信息,但是没有任何理由去查看,完整的回溯 dosnt 帮助,问题是 Micropost 不是 micropost 集成测试中的一个类一些原因:(
猜你喜欢
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 2015-05-27
  • 2019-12-26
相关资源
最近更新 更多