no pueden semillas de acceso en mis fábricas al ejecutar pruebas unitarias Rieles
-
09-10-2019 - |
Pregunta
Tengo fábricas que incluyen algunos datos de configuración. Por ejemplo:
Factory.define :event do |event|
event.name { Factory.next(:email) }
event.blurb "Test event blurb"
event.association(:owner, :factory => :user)
event.countries Country.all
end
Country.all simplemente asigna todos los países de una tabla de búsqueda para ese evento en particular. Incluyo todos los países por cargar las semillas antes de correr mis pruebas con esta línea en mi ayudador prueba:
require "#{Rails.root}/db/seeds.rb"
Esto funciona muy bien cuando se ejecutan las pruebas unitarias individuales:
ruby test/unit/event_test.rb
Sin embargo Country.all devuelve nada cuando corro la prueba usando:
rake test:units
¿Alguien sabe por qué ocurre esto?
Solución
Se requieren semillas en el test_helper, se carga una vez. Después de cada base de datos de prueba de funcionamiento es aniquilado, incluyendo datos sembradas. Con el fin de hacer que las semillas se cargan cada vez, añadir algo como esto a la definición de clase ActiveSupport::TestCase
de su test_helper.
class ActiveSupport::TestCase
# this line:
setup { load "#{Rails.root}/db/seeds" }
end
Otros consejos
Tener un vistazo al código fuente de la gema rake
. Parece que tendrá que cargar su archivo seeds.rb
manualmente en cada archivo de prueba, o mejor aún, desde test_helper.rb
.