任何人都知道在运行cucumber features
时会导致此错误的原因是什么?
uninitialized constant DatabaseCleaner (NameError)
答案 0 :(得分:14)
将此行添加到您的Gemfile:
gem 'database_cleaner'
这是因为cucumber-rails
不会自动依赖database_cleaner
,因为您可能正在构建没有数据库的Rails应用程序,因此您必须明确要求它。
答案 1 :(得分:4)
DatabaseCleaner是一个用于“清理”数据库的库。 Cucumber将在运行功能之间使用它以确保您的数据库处于可测试状态(即空)。
您的想法是在每个测试的Given
子句中构建正确的数据
此错误仅表示未正确使用DatabaseCleaner。
不同版本的Rails / Cucumber有不同的配置方式,并提供不同的功能,因此很难在不知道设置的情况下为您提供正确的解决方案。
但有几个提示:
看看cucumber-rails宝石。它为您提供了很多很棒的东西,比如生成器和rake任务,因此您可以运行rake cucumber
而不是直接使用黄瓜。通常情况下,生成器会为您构建一个需要database_cleaner
的配置文件。
否则,将database_cleaner
添加到您的依赖项列表中,并在您的测试套件代码中放置一个require 'database_cleaner'
。
答案 2 :(得分:1)
我刚刚遇到了这个问题。我把我的黄瓜宝石降级到版本1.0.6,我收到了这条消息:
uninitialized constant Cucumber::Rails::Database (NameError)
当我使用黄瓜1.0.6(不是最新版本)和database_cleaner v.7.7.0时。为了修复错误,我只运行此命令(在Rails 3.1.3上):
rails g cucumber:install
它会提示您替换文件features/support/env.rb
。只需回答Y
,您就可以再次运行rake cucumber:ok
。
答案 3 :(得分:0)
我正在使用spring,SSH
为我工作