Si je charge les appareils manuellement via My Test_Helper inclut Je suis un peu désemparé pour le moment et pourrait avoir besoin d'une aide! p>
J'ai beaucoup essayé et je pense que cela a à voir avec des paramètres d'environnement ou des plugins utilisés dans ce projet. Est-ce que quelqu'un sait où lire sur quels fichiers sont chargés pour l'environnement de test? P> Test de râteau: unités code> échoue dans mon application actuelle, car les données nécessaires des appareils sont manquantes. P>
Rake DB: Fixtures: chargez des rails_env = Test CODE> Les tests d'unité fonctionnent, mais le râteau purge la base de données de test. P>
Fixtures: Tous CODE> et mes tests en héritage - mais les appareils ne se chargent tout simplement pas. P>
6 Réponses :
Je ne sais pas si vous l'avez déjà fait, mais exportez les données de test de la base de données vers les fichiers YML dans des tests / luminaires à l'aide d'un plugin comme AR_FIXTURES P>
HMM, le problème est d'obtenir des données des appareils dans la base de données, je pense que ar_fixtures fait l'inverse! :)
Mettez l'appel à mon Fixtures: Tous Code> dans votre classe de test, pas la classe Super (Test_Helper). Je suppose que l'initialisation de la super classe ne fonctionne pas la manière dont vous m'attendez et que
fixtures: tout code> n'est pas appelé. Essayez peut-être de mettre l'appel dans la méthode d'initialisation de test_helper.
test / test_helper.rb code> ressemble à ceci: p>
Bonjour Csummp, j'ai essayé de mettre luminaires: tout code> directement dans ma classe de test, mais cela n'a pas fonctionné. On dirait que l'appel n'a pas d'effet - mais je ne peux tout simplement pas imaginer pourquoi!
+1: Cela a fonctionné pour moi et j'aime cette solution car il est localisé et explicite. Dans ce cas, Fixtures: utilisateurs code> dans
usercontroltertest code> suffira.
J'ai enfin trouvé le problème, bien que les solutions soient une sorte de hacky. p>
Un plugin s'appuie sur le fait qu'il existe des données dans la base de données, au moins une ligne. Alors qu'est-ce qui s'est passé était: p>
La solution hacky est la suivante: mettre les données nécessaires directement dans le schéma et non dans des appareils, car il est chargé de fin. P>
Je vais chercher une solution plus pratique et mettra à jour cette réponse si j'en ai trouvé un. P>
Les plugins ne devraient pas faire de choses comme ça. La meilleure chose à faire est de corriger le plugin et de leur envoyer une demande de traction sur GitHub.
J'ai corrigé la question dans le plugin et soumettra un correctif bientôt. ;)
Une autre approche consiste à écrire votre propre tâche de râteau personnalisée pour les tests.
Par exemple: P>
task :test_units do RAILS_ENV = 'test' # Force the environment to test puts "Recreate the test database" Rake::Task['db:test:prepare'].invoke puts "Seed the database with fixtures" Rake::Task['db:fixtures:load'].invoke puts "Executing Unit Tests" Rake::Task['test:units'].prerequisites.clear Rake::Task['test:units'].invoke end
Cela a fonctionné pour moi, +1. La seule différence était que je devais mettre rails_env = 'test' code> après
dB: test: préparer code> oue sinon SQLite3 échoue avec une erreur disant que je n'ai pas le bon Autorisations pour purger le test DB.
J'ai eu le même problème. Ou plutôt, le problème était que mes appareils n'étaient pas à jour avec le schéma de la base de données. Au lieu de jeter une exception, les rails utilisent simplement la base de données de test comme solution de secours. La plupart des IFFY. P>
Mon problème est oublié de mettre "besoin" test_helper "" à la tête. par exemple.
require 'test_helper' class AdminUserTest < ActiveSupport::TestCase # test "the truth" do # assert true # end end
Pour ce que cela vaut, j'ai rencontré un problème similaire, sauf que je définissais une constante qui s'appuyait sur un enregistrement de base de données. Déplacé cela constant à une variable d'instance et de booya. On dirait que les constantes sont définies avant que les appareils soient chargés également. À votre santé.