【问题标题】:cucumber / rails error uninitialized constant DatabaseCleaner (NameError)cucumber / rails 错误未初始化常量 DatabaseCleaner (NameError)
【发布时间】:2011-03-29 20:57:24
【问题描述】:

有人知道在运行cucumber features 时导致此错误的原因是什么吗?

uninitialized constant DatabaseCleaner (NameError)

【问题讨论】:

  • 您是否安装了 database_cleaner gem(如果使用 rails3,在您的 gemfile 中?)
  • 不,我不知道。我从来不需要在我的 gemfile 中指定它...
  • 添加它确实可以解决问题 - 尽管知道是什么导致它会很有趣。默认格式现在也是pretty,这是我以前从未有过的。

标签: ruby-on-rails cucumber integration-testing capybara


【解决方案1】:

将此行添加到您的 Gemfile:

gem 'database_cleaner'

这是因为 cucumber-rails 不会自动依赖于 database_cleaner,因为您可能正在构建一个没有数据库的 Rails 应用程序,因此您必须明确要求它。

【讨论】:

  • 我还添加了require 'database_cleaner'spec_helper.rb 来处理这个异常。
【解决方案2】:

DatabaseCleaner 是一个用于“清理”数据库的库。 Cucumber 将在运行功能之间使用它来确保您的数据库处于可测试状态(即空)。

这个想法是您在 Given 子句中为每个测试建立适当的数据

此错误仅表示未正确需要 DatabaseCleaner。

不同版本的 Rails/Cucumber 有不同的配置方式,并在这方面提供不同的功能,因此在不了解您的设置的情况下很难真正为您提供正确的解决方案。

不过有几点建议:

查看cucumber-rails 宝石。它为您提供了许多不错的东西,例如生成器和 rake 任务,因此您可以运行 rake cucumber 而不是直接使用 cucumber。通常,生成器会为您构建一个需要 database_cleaner 的配置文件。

否则,将database_cleaner 添加到您的依赖项列表中,并在您的测试套件代码中的某处放置require 'database_cleaner'

【讨论】:

  • 当我运行rails g cucumber:install 时,我的 gemfile 中有 webrat,后来我切换到 capybara...也许这与它有关?
  • 这个答案太长了,根本没有回答问题。 “依赖列表”?新手怎么知道那是什么?明确。
  • 不,您使用的无头浏览器应该没关系...如果您已经完成了cucumber:install,请尝试使用 rake 任务而不是直接使用cucumber 对其进行测试,它可能会设置额外的依赖项:github.com/aslakhellesoy/cucumber/wiki/Using-Rake
【解决方案3】:

我刚刚遇到了这个问题。我将 Cucumber gems 降级到 1.0.6 版,并收到以下消息:

uninitialized constant Cucumber::Rails::Database (NameError)

当我使用 cucumber 1.0.6(不是最新版本)和 database_cleaner v. 1.7.0 时。为了修复错误,我只运行这个命令(在 Rails 3.1.3 上):

rails g cucumber:install

它会提示您替换文件features/support/env.rb。只需回复Y,您就可以再次运行rake cucumber:ok

【讨论】:

    【解决方案4】:

    我正在使用 spring,spring stop 为我工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多