任何人都知道在运行cucumber features
时会导致此错误的原因是什么?cucumber/rails error未初始化的常量DatabaseCleaner(NameError)
uninitialized constant DatabaseCleaner (NameError)
任何人都知道在运行cucumber features
时会导致此错误的原因是什么?cucumber/rails error未初始化的常量DatabaseCleaner(NameError)
uninitialized constant DatabaseCleaner (NameError)
DatabaseCleaner是一个清理数据库的库。黄瓜将在运行功能之间使用它,以确保您的数据库处于可测试状态(即空)。
的想法是,你建立你的Given
条款的正确数据为每个测试
此错误只是意味着DatabaseCleaner没有恰当地要求。
不同版本的Rails/Cucumber有不同的配置方法,并提供不同的功能,所以很难在不知道您的设置的情况下为您提供正确的解决方案。
的一些提示,但:
看那cucumber-rails宝石。它给你很多好东西,比如生成器和耙子任务,所以你可以运行rake cucumber
而不是直接使用黄瓜。通常情况下,生成器会生成一个需要database_cleaner
的配置文件。
否则,将database_cleaner
添加到您的依赖关系列表中,并将require 'database_cleaner'
放在测试套件代码的某处。
当我运行'rails g cucumber:install'时,我在我的gem文件中有了webrat,我后来改用了capybara ...也许这跟它有关系? – DanS 2011-03-29 21:15:38
这个答案过长,根本不回答问题。 “依赖关系列表”?新手如何知道这是什么?明确。 – 2011-03-29 21:20:19
没有你使用的无头浏览器应该无关紧要......如果你已经完成了'cucumber:install',尝试用rake任务进行测试,而不是直接使用'cucumber',它可能会设置额外的依赖关系:https://github.com/aslakhellesoy/cucumber/wiki/Using-Rake – brad 2011-03-29 21:20:38
此行添加到您的Gemfile:
gem 'database_cleaner'
这是因为cucumber-rails
不会自动取决于database_cleaner
因为你可能没有一个数据库中建立一个Rails应用程序,所以你必须明确地需要它。
我还将'require'database_cleaner''添加到''spec_helper。rb''来处理这个异常。 – 2013-06-25 19:36:00
我刚刚经历过这个问题。我降级我的黄瓜宝石1.0.6版本,我得到这个消息:
uninitialized constant Cucumber::Rails::Database (NameError)
当我用黄瓜1.0.6(不是最新版本)和database_cleaner v 1.7.0。对于固定的错误,我只是运行此命令(on Rails的3.1.3):
rails g cucumber:install
它会提示您更换文件features/support/env.rb
。只需回答Y
,您就可以再次运行rake cucumber:ok
。
您是否安装了database_cleaner gem(并且在使用rails3的情况下在您的gemfile中?) – 2011-03-29 21:07:57
不,我不知道。我从来没有必要在我的gemfile中指定它... – DanS 2011-03-29 21:09:21
添加它确实解决了这个问题 - 尽管知道是什么导致它会很有趣。默认的格式现在也是'漂亮',这是我以前从未有过的。 – DanS 2011-03-29 21:13:15