2011-03-29 21 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

相關問題