Le fond: Je rencontre quelques problèmes avec la gemme "Factory Girl" de Thoughtbot, qui est utilisée pour créer des objets à utiliser dans des tests unitaires ou autres. J'aimerais aller à la console et lancer différents appels Factory Girl pour vérifier ce qui se passe. Par exemple, j'aimerais bien y aller….
>> Factory(:user).inspect
Je sais que vous pouvez exécuter la console dans différents environnements ...
$ script/console Rails_ENV = test
Mais quand je fais ça, la classe Usine n'est pas disponible. Il semble que test_helper.rb
ne se charge pas.
J'ai essayé divers appels require
dont un avec le chemin absolu vers test_helper.rb
mais ils échouent de la même façon:
$ script/console Rails_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/Rails_ENV=test.rb
Grr. Argh.
Pour Rails <3.
Courir script/console --help
. Vous remarquerez que la syntaxe est script/console [environment]
, qui dans votre cas est script/console test
.
Je ne sais pas si vous avez besoin de l'aide de test ou si l'environnement de test le fait pour vous, mais avec cette commande, vous devriez au moins pouvoir démarrer correctement dans l'environnement de test.
Sidenote: Il est en effet assez étrange que les différents fichiers binaires du script/disposent de différentes façons de définir l’environnement Rails.
Pour Rails 3 et 4
Courir Rails c test
. Préfini bundle exec
_ si vous en avez besoin pour l'environnement actuel de l'application.
Pour Rails 5 et 6
Courir Rails console -e test
.
Dans Rails 3, il suffit de faire Rails console test
ou Rails console production
ou Rails console development
(qui est la valeur par défaut).
script/console test
Devrait être tout ce dont vous avez besoin.
Pour Rails 5.2.0: "Passer le nom de l'environnement en argument standard est obsolète et sera supprimé de la prochaine Rails version. Utilisez le - e option à la place. "
Rails c -e test
Vous pouvez spécifier l'environnement dans lequel la commande de console doit être exécutée.
Rails c [environment]
Exemples
1) Pour la mise en scène
Rails c staging
2) pour la production
Rails c production
Pour la source et une description détaillée: La Rails Ligne de commande
David Smith a raison, il suffit de faire
script/console test
La commande help montrera pourquoi cela fonctionne:
$ script/console -h
Usage: console [environment] [options]
-s, --sandbox Rollback database modifications on exit.
--irb=[irb] Invoke a different irb.
--debugger Enable Ruby-debugging for the console.
C'est le [environnement] bit.
Je partage la douleur du demandeur. Il y a vraiment trois questions distinctes ici, dont certaines sont abordées, d'autres non:
Comment démarrez-vous la console dans l'environnement de test?
Pour les versions Rails récentes, bundle exec Rails c test
] Récentes ou alternatives, pour cela.
Comment vous assurez-vous que test/test_helper.rb est chargé dans cette session de console?
Quelque chose comme require './test/test_helper'
Devrait le faire.
Pour moi, cela retourne true, ce qui indique qu'il n'était pas déjà chargé lorsque j'ai démarré la console. Si cette déclaration renvoie false, vous avez simplement perdu quelques frappes au clavier, mais vous êtes toujours prêt.
Une fois que test_helper est chargé, comment appelez-vous les méthodes qui y sont définies?
Dans un test_helper typique, les méthodes personnalisées sont généralement définies en tant que méthodes d'instance de ActiveSupport :: TestCase. Donc, si vous voulez appeler l'un d'eux, vous avez besoin d'une instance de cette classe. Par essais et erreurs, ActiveSupport :: TestCase.new a un paramètre obligatoire, donc ... transmettez-lui quelque chose.
Si votre test_helper a une méthode appelée create_user, vous pouvez l'invoquer de cette façon: ActiveSupport::TestCase.new("no idea what this is for").create_user
Assurez-vous que vous avez installé le fichier GEM et que vous avez ajouté la ligne suivante dans votre fichier environment.rb ou test.rb.
config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
Test Env
Rails console test # or just Rails c test
Développement Env
Rails console # or just Rails c
Commande à exécuter Rails est
Rails c -e test
ou
Rails_ENV=test Rails c
si vous faites face à un problème quelque chose comme
ActiveRecord::StatementInvalid:
Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`
alors vous devriez d'abord préparer votre base de test en exécutant
bundle exec rake db:test:prepare