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.

111
demandé sur Ethan 2009-06-26 20:29:15

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.

170
répondu August Lilleaas 2014-03-12 17:41:46

Dans Rails 3, Faites simplement rails console test ou rails console production ou rails console development (qui est la valeur par défaut).

60
répondu sivabudh 2011-07-08 20:57:28
script/console test

Devrait être tout ce dont vous avez besoin.

10
répondu David Smith 2009-06-26 18:24:06

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.

3
répondu Purplejacket 2011-02-09 19:44:26

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

3
répondu Aamir 2016-09-19 07:45:38

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"
1
répondu Simone Carletti 2009-06-26 16:54:23

Je partage la douleur de l'asker. Il y a vraiment trois questions distinctes ici, dont certaines sont abordées, d'autres non:

  1. 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.

  2. 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.

  3. 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

1
répondu Nick Davies 2017-05-19 19:15:45

Test Env

rails console test # or just rails c test

Développement Env

rails console # or just rails c
0
répondu anyavacy 2016-04-14 07:30:00