2011-03-29 14 views
7

Alguien tiene alguna idea de lo que está causando este error al ejecutar cucumber features?error de pepino/rieles constante no inicializada DatabaseCleaner (NameError)

uninitialized constant DatabaseCleaner (NameError) 
+1

¿Tiene la joya database_cleaner instalada (y en su gemfile si usa rails3?) –

+0

No, no es así. Nunca he tenido que especificarlo en mi gemfile ... – DanS

+0

Agregarlo soluciona el problema, aunque sería interesante saber qué lo está causando. El formato predeterminado también es ahora 'bonito', que nunca antes tuve. – DanS

Respuesta

3

DatabaseCleaner es una biblioteca para "limpiar" su db. Cucumber lo usará entre las funciones en ejecución para garantizar que su db se encuentre en estado comprobable (es decir, vacío).

La idea es que se acumulan los datos adecuados en sus cláusulas Given para cada prueba

Este error sólo significa que DatabaseCleaner no se ha exigido correctamente.

Las diferentes versiones de Rails/Cucumber tienen diferentes formas de configurarlo todo y proporcionan diferentes funcionalidades en este aspecto, por lo que es difícil darle la solución correcta sin conocer su configuración.

Un par de consejos sin embargo:

Mira el cucumber-rails joya. Le ofrece muchas cosas buenas, como generadores y tareas de rake para que pueda ejecutar rake cucumber en lugar de usar pepino directamente. Muchas veces los generadores construirán un archivo de configuración que requiere database_cleaner para usted.

De lo contrario, agregue database_cleaner a su lista de dependencias y ponga un require 'database_cleaner' en algún lugar del código de su suite de pruebas.

+0

tenía webrat en mi gemfile cuando ejecuté 'rails g cucumber: install', y luego cambié a capibara ... ¿quizás esto tiene algo que ver con eso? – DanS

+2

Esta respuesta es demasiado larga y no responde la pregunta en absoluto. "lista de dependencias"? ¿Cómo sabe un novato qué es eso? Ser explícito –

+1

no debe importar el navegador sin cabeza que está utilizando ... si ya ha hecho el 'cucumber: install', tratando de probarlo con la tarea de rake en lugar de usar' cucumber' directamente, podría configurar el dependencias adicionales: https://github.com/aslakhellesoy/cucumber/wiki/Using-Rake – brad

13

añadir esta línea a su Gemfile:

gem 'database_cleaner' 

Esto es porque no depende cucumber-rails automáticamente en database_cleaner, ya que puede ser la construcción de una aplicación Rails sin una base de datos, y por lo que deben exigir explícitamente.

+2

También agregué '' require 'database_cleaner''' a '' spec_helper.rb'' para manejar esta excepción. –

1

Acabo de experimentar el problema. Cambié mis joyas de pepino a la versión 1.0.6, y me dio este mensaje:.

uninitialized constant Cucumber::Rails::Database (NameError) 

cuando utilizo el pepino 1.0.6 (no la versión más reciente) y database_cleaner v 1.7.0. Para corregir el error, acabo de ejecutar este comando (en los carriles 3.1.3):

rails g cucumber:install 

se le pedirá que reemplazar el archivo features/support/env.rb. Simplemente responda con Y y puede ejecutar rake cucumber:ok nuevamente.

Cuestiones relacionadas