J'ai suivi le débat qui fait rage sur le site de Chargement automatique des données des graines à partir de db/seeds.rb avec rake . Les irréductibles maintiennent qu'il ne faut jamais charger de données d'amorçage pour les tests, mais j'adopte une position plus modérée, à savoir qu'il y a des occasions où l'on peut vouloir charger des données d'amorçage. pour des tests spécifiques par exemple en vérifiant que les données de base existent.
Contrairement à certaines réponses données ici, je ne no recommande de charger inconditionnellement les graines à partir de votre fichier spec_helper. Au lieu de cela, vous pouvez charger vos graines en utilisant before :each
o before :all
à l'intérieur seulement des fichiers de test qui ont besoin des graines, par exemple :
describe "db seed tests" do
before(:each) do
load "#{Rails.root}/db/seeds.rb"
end
...your test code here...
end
mise à jour
Comme le souligne @marzapower, si vous suivez cette voie, votre fichier seeds.db doit vider chaque table avant de créer des entrées ou d'utiliser le fichier find_or_create_by
méthodes. (Conseil : la première est plus rapide et plus fiable.) Cela évitera les entrées en double si vous chargez le fichier seeds.db plus d'une fois.