Comment exécuter la console Rails dans L'environnement de test et charger l'assistant de test.rb?
L'arrière-plan: j'ai quelques problèmes avec la gemme "Factory Girl" de Thoughtbot, avec est utilisé pour créer des objets à utiliser dans l'unité et d'autres tests. Je voudrais aller à la console et lancer différents appels de fille D'usine pour vérifier ce qui se passe. Par exemple, je voudrais aller à il y a à faire...
>> 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 cela, la classe D'usine n'est pas disponible. Il semble que bien que test_helper.rb
ne soit pas chargé.
J'ai essayé divers appels require
dont un avec le chemin absolu vers test_helper.rb
mais ils échouent de la même manière:
$ 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.
8 réponses
Pour Les Rails
Exécuter script/console --help
. Vous remarquerez que la syntaxe est script/console [environment]
, ce qui dans votre cas est de script/console test
.
Je ne suis pas sûr si vous devez avoir besoin de l'assistant de test ou si l'environnement de test le fait pour vous, mais avec cette commande, vous devriez au moins pouvoir démarrer avec succès dans l'environnement de test.
En tant que sidenote: il est en effet assez étrange que les différents binaires dans script / aient différentes façons de définir l'environnement rails.
Pour Rails 3 et 4
Exécuter rails c test
. Ajoutez bundle exec
Si vous en avez besoin pour l'environnement d'application actuel.
Dans Rails 3, Faites simplement 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.
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 la [de l'environnement] bits.
Vous pouvez spécifier l'environnement dans lequel la commande de la console doit fonctionner.
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 la description détaillée: la ligne de commande Rails
Assurez-vous que vous avez installé la gemme et que vous avez ajouté la ligne suivante dans votre environnement.rb ou de test.fichier rb.
config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
Je partage la douleur de l'asker. Il y a vraiment trois questions distinctes ici, dont certaines sont abordées, d'autres non:
-
Comment démarrer la console dans l'environnement de test?
Pour les versions récentes de Rails,
bundle exec rails c test
, ou des syntaxes alternatives pour cela. -
Comment 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 renvoie true, indiquant que ce n'était pas le cas déjà chargé quand j'ai commencé la console. Si cette instruction renvoie false, vous avez juste gaspillé quelques frappes, mais vous êtes toujours prêt à partir.
-
Une fois test_helper 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 comme des méthodes d'instance de ActiveSupport:: TestCase. Donc, si vous voulez en appeler un, vous avez besoin d'une instance de cette classe. Par essais et erreurs, ActiveSupport:: TestCase.de nouveaux a un paramètre requis, donc...passer quelque chose.
Si votre test_helper a une méthode appelée create_user, vous pouvez l'appeler de cette façon:
ActiveSupport::TestCase.new("no idea what this is for").create_user
Test Env
rails console test # or just rails c test
Développement Env
rails console # or just rails c