2011-03-29 64 views
7

任何人都知道在运行cucumber features时会导致此错误的原因是什么?cucumber/rails error未初始化的常量DatabaseCleaner(NameError)

uninitialized constant DatabaseCleaner (NameError) 
+1

您是否安装了database_cleaner gem(并且在使用rails3的情况下在您的gemfile中?) – 2011-03-29 21:07:57

+0

不,我不知道。我从来没有必要在我的gemfile中指定它... – DanS 2011-03-29 21:09:21

+0

添加它确实解决了这个问题 - 尽管知道是什么导致它会很有趣。默认的格式现在也是'漂亮',这是我以前从未有过的。 – DanS 2011-03-29 21:13:15

回答

3

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

的想法是,你建立你的Given条款的正确数据为每个测试

此错误只是意味着DatabaseCleaner没有恰当地要求。

不同版本的Rails/Cucumber有不同的配置方法,并提供不同的功能,所以很难在不知道您的设置的情况下为您提供正确的解决方案。

的一些提示,但:

看那cucumber-rails宝石。它给你很多好东西,比如生成器和耙子任务,所以你可以运行rake cucumber而不是直接使用黄瓜。通常情况下,生成器会生成一个需要database_cleaner的配置文件。

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

+0

当我运行'rails g cucumber:install'时,我在我的gem文件中有了webrat,我后来改用了capybara ...也许这跟它有关系? – DanS 2011-03-29 21:15:38

+2

这个答案过长,根本不回答问题。 “依赖关系列表”?新手如何知道这是什么?明确。 – 2011-03-29 21:20:19

+1

没有你使用的无头浏览器应该无关紧要......如果你已经完成了'cucumber:install',尝试用rake任务进行测试,而不是直接使用'cucumber',它可能会设置额外的依赖关系:https://github.com/aslakhellesoy/cucumber/wiki/Using-Rake – brad 2011-03-29 21:20:38

13

此行添加到您的Gemfile:

gem 'database_cleaner' 

这是因为cucumber-rails不会自动取决于database_cleaner因为你可能没有一个数据库中建立一个Rails应用程序,所以你必须明确地需要它。

+2

我还将'require'database_cleaner''添加到''spec_helper。rb''来处理这个异常。 – 2013-06-25 19:36:00

1

我刚刚经历过这个问题。我降级我的黄瓜宝石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

相关问题