Le contexte: j'ai quelques problèmes avec la gemme "Factory Girl" de Thoughtbot, qui sert à créer des objets à utiliser dans des tests unitaires et autres. J'aimerais accéder à la console et lancer différents appels Factory Girl pour voir ce qui se passe. Par exemple, j'aimerais aller là-dedans, 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 Factory n'est pas disponible. Il semble test_helper.rb
ne pas être chargé.
J'ai essayé divers require
appels, 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.
ruby-on-rails
ruby
testing
shoulda
Ethan
la source
la source
Réponses:
Pour les rails <3.0
Courez
script/console --help
. Vous remarquerez que la syntaxe estscript/console [environment]
, ce qui dans votre cas estscript/console test
.Je ne sais pas 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 guise de remarque: il est en effet assez étrange que les différents binaires du script / aient différentes façons de définir l'environnement rails.
Pour les rails 3 et 4
Courez
rails c test
. Ajoutezbundle exec
si vous en avez besoin pour l'environnement actuel de l'application.Pour les rails 5 et 6
Courez
rails console -e test
.la source
rails console [environment]
rails server -e test
features/support/helpers.rb
n'a pas été chargé automatiquement. De plus,Rack::Test
n'est pas chargé.Dans Rails 3, faites simplement
rails console test
ourails console production
ourails console development
(qui est la valeur par défaut).la source
Cela devrait être tout ce dont vous avez besoin.
la source
Pour Rails 5.2.0: "Passer le nom de l'environnement comme argument normal est obsolète et sera supprimé dans la prochaine version de Rails. Veuillez utiliser plutôt l'option -e."
la source
Vous pouvez spécifier l'environnement dans lequel la commande de console doit fonctionner.
Exemples
1) Pour la mise en scène
2) pour la production
Pour la source et la description détaillée: La ligne de commande Rails
la source
David Smith a raison, fais juste
La commande help montrera pourquoi cela fonctionne:
C'est le bit [environnement] .
la source
Je partage la douleur du demandeur. 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 d'autres syntaxes pour cela.Comment vous assurez-vous que test / test_helper.rb est chargé dans cette session de console?
Quelque chose comme ça
require './test/test_helper'
devrait le faire.Pour moi, cela renvoie true, indiquant qu'il n'était pas déjà chargé lorsque j'ai démarré la console. Si cette déclaration renvoie false, vous venez de perdre quelques frappes, mais vous êtes toujours prêt à partir.
Une fois test_helper chargé, comment appeler 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 d'ActiveSupport :: TestCase. Donc, si vous voulez en appeler l'un, vous avez besoin d'une instance de cette classe. Par essais et erreurs, ActiveSupport :: TestCase.new a un paramètre obligatoire, alors ... 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
la source
:random
par défautinitialize
méthode. Mais il semble que le paramètre auquel il s'attend soit stocké comme@NAME
sur l'objet créé.Assurez-vous que vous avez installé le GEM et que vous avez ajouté la ligne suivante dans votre fichier environment.rb ou test.rb.
la source
Test Env
Développement Env
la source
La commande pour exécuter l'environnement de test de la console des rails est
ou
si vous rencontrez un problème comme
Ensuite, vous devez d'abord préparer votre base de données de test en exécutant
la source