Ne peuvent pas les graines d'accès dans mes usines lors de l'exécution des tests unitaires Rails
-
09-10-2019 - |
Question
J'ai usines qui incluent des données de configuration. Par exemple:
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 affecte simplement tous les pays d'une table de consultation à cet événement particulier. Je l'ensemble des pays de graines de chargement avant que je lance mes tests avec cette ligne dans mon assistant de test:
require "#{Rails.root}/db/seeds.rb"
Cela fonctionne très bien lors de l'exécution des tests unitaires individuels:
ruby test/unit/event_test.rb
Cependant retourne Country.all rien quand je lance le test en utilisant:
rake test:units
Quelqu'un sait pourquoi cela se passe?
La solution
Vous avez besoin de graines dans le test_helper, il est chargé une fois. Après chaque base de données de test est effacé, y compris les données têtes de série. Afin de faire des graines charger à chaque fois, ajouter quelque chose comme ceci à la définition de la classe ActiveSupport::TestCase
de votre test_helper.
class ActiveSupport::TestCase
# this line:
setup { load "#{Rails.root}/db/seeds" }
end
Autres conseils
Jetez un coup d'oeil au code source de la gemme rake
. Il semble que vous devrez charger votre fichier manuellement seeds.rb
dans chaque fichier de test, ou mieux encore, de test_helper.rb
.