El trasfondo: Tengo algunos problemas con la gema "Factory Girl" de Thoughtbot, que se usa para crear objetos para usar en unidades y otras pruebas. Me gustaría ir a la consola y ejecutar diferentes llamadas de Factory Girl para ver qué está sucediendo. Por ejemplo, me gustaría entrar allí ...
>> Factory(:user).inspect
Sé que puedes ejecutar la consola en diferentes entornos ...
$ script / consola RAILS_ENV = prueba
Pero cuando hago eso, la clase Factory no está disponible. Parece que test_helper.rb
no se está cargando.
Probé varias require
llamadas, incluida una con la ruta absoluta a, test_helper.rb
pero fallaron de manera similar a esta:
$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Grr. Argh.
ruby-on-rails
ruby
testing
shoulda
Ethan
fuente
fuente
Respuestas:
Para rieles <3.0
Corre
script/console --help
. Notarás que la sintaxis esscript/console [environment]
, que en tu caso esscript/console test
.No estoy seguro de si debe requerir el asistente de prueba o si el entorno de prueba lo hace por usted, pero con ese comando debería al menos poder iniciar correctamente en el entorno de prueba.
Como nota al margen: De hecho, es un poco extraño que los diversos binarios en script / tengan diferentes formas de configurar el entorno de rieles.
Para rieles 3 y 4
Corre
rails c test
. Anteponerbundle exec
si lo necesita para el entorno actual de la aplicación.Para rieles 5 y 6
Corre
rails console -e test
.fuente
rails console [environment]
rails server -e test
features/support/helpers.rb
, no se cargó automáticamente. Además,Rack::Test
no está cargado.En Rails 3, simplemente haz
rails console test
orails console production
orails console development
(que es el predeterminado).fuente
Debería ser todo lo que necesitas.
fuente
Para Rails 5.2.0: "Pasar el nombre del entorno como un argumento regular está en desuso y se eliminará en la próxima versión de Rails. Por favor, use la opción -e en su lugar".
fuente
Puede especificar el entorno en el que debe operar el comando de la consola.
Ejemplos
1) Para la puesta en escena
2) para producción
Para fuente y descripción detallada: La línea de comandos de Rails
fuente
David Smith tiene razón, solo hazlo
El comando de ayuda mostrará por qué funciona esto:
Es el bit [del medio ambiente] .
fuente
Comparto el dolor de quien pregunta. Aquí hay realmente tres preguntas separadas, algunas de las cuales se abordan, otras no:
¿Cómo se inicia la consola en el entorno de prueba?
Para versiones recientes de Rails
bundle exec rails c test
, o sintaxis alternativas para eso.¿Cómo se asegura de que test / test_helper.rb esté cargado en esa sesión de consola?
Algo como
require './test/test_helper'
debería hacerlo.Para mí, esto devuelve verdadero, lo que indica que aún no estaba cargado cuando inicié la consola. Si esa declaración devuelve falso, entonces solo desperdició algunas teclas, pero aún está listo para comenzar.
Una vez que se carga test_helper, ¿cómo se llaman los métodos definidos en él?
En un test_helper típico, los métodos personalizados se definen normalmente como métodos de instancia de ActiveSupport :: TestCase. Entonces, si desea llamar a uno de ellos, necesita una instancia de esa clase. Por ensayo y error, ActiveSupport :: TestCase.new tiene un parámetro obligatorio, así que ... páselo.
Si su test_helper tiene un método llamado create_user, puede invocarlo de esta manera:
ActiveSupport::TestCase.new("no idea what this is for").create_user
fuente
:random
por defectoinitialize
método. Pero parece que el parámetro que espera se almacena como@NAME
en el objeto creado.Asegúrese de haber instalado GEM y de haber agregado la siguiente línea en su archivo environment.rb o test.rb.
fuente
Prueba Env
Env del desarrollo
fuente
El comando para ejecutar el entorno de prueba de la consola de rieles es
o
si se enfrenta a un problema como
entonces primero debe preparar su base de datos de prueba ejecutando
fuente