107 votes

Comment utiliser les usines de FactoryGirl dans la console Rails ?

J'utilise la console de rails dans l'environnement de développement et je veux utiliser des usines. Comment puis-je y avoir accès ?

J'ai essayé require "FactoryGirl" qui renvoie

1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl

239voto

Alex Popov Points 1209

Je procède de la manière suivante :

  • Démarrez la console rails dans l'environnement de test en mode sandbox.

    rails console -e test --sandbox

Vous en avez besoin pour deux raisons :

  1. Tous les changements que vous effectuez sont annulés.
  2. Si vous avez déjà des données de base, il se peut que les usines commencent la sérialisation des attributs à partir de 1, mais ces enregistrements peuvent déjà exister.

Puis dans la console :

  • Nécessite FactoryBot (s'appelait FactoryGirl) :

    require 'factory_bot'
  • Chargez les définitions d'usine :

    FactoryBot.find_definitions
  • Inclure les méthodes FactoryBot pour éviter de préfixer tous les appels à FB avec FactoryBot ( create au lieu de FactoryBot.create ) :

    include FactoryBot::Syntax::Methods

P.S. Pour pierre de fabrication vous pouvez charger les définitions dans la console de rails avec :

Fabrication.manager.load_definitions

Aussi require 'faker' si vous l'utilisez.

44voto

muttonlamb Points 2803

Pour résoudre ce problème, assurez-vous que la gemme factory bot est spécifiée dans votre Gemfile de la manière suivante

group :development, :test do
  gem 'factory_bot_rails'
end

Puis bundle install .

Cela devrait rendre la classe FactoryBot disponible dans la console de développement.

J'espère que cela vous aidera.

26voto

Robin Daugherty Points 1111

Vous devez require 'factory_bot_rails' qui est la gemme réelle utilisée par Rails. Cette gemme inclura la bibliothèque Factory Bot, ce qui fera de FactoryBot disponible.

Vous pouvez soit faire cela, soit mettre à jour votre Gemfile pour le demander au démarrage comme dans la réponse de muttonlamb.

11voto

Jacka Points 638

Si vous souhaitez qu'il soit disponible à chaque fois que vous démarrez la console, vous pouvez ajouter ce morceau de code en haut de votre fichier config/environnements/development.rb :

require 'factory_bot_rails'
require 'faker' # if you're also using faker gem
require 'rails/console/helpers'
Rails::ConsoleMethods.prepend(FactoryBot::Syntax::Methods)

Vous pouvez maintenant utiliser les aides intégrées juste après le démarrage de la console, par exemple :

company = create(:company)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X