cucumber / rails错误未初始化的常量DatabaseCleaner(NameError)

时间:2011-03-29 20:57:24

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

任何人都知道在运行cucumber features时会导致此错误的原因是什么?

uninitialized constant DatabaseCleaner (NameError)

4 个答案:

答案 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为我工作