Ne peuvent pas les graines d'accès dans mes usines lors de l'exécution des tests unitaires Rails

StackOverflow https://stackoverflow.com/questions/4654321

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top