Hoe gebruik ik fabrieken van FactoryGirl in de rails-console

Ik gebruik de rails-console in de ontwikkelomgeving en ik wil fabrieken gebruiken. Hoe kan ik er toegang toe krijgen?

Ik heb geprobeerd require "FactoryGirl"wat teruggeeft

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

Antwoord 1, autoriteit 100%

Ik doe dit op de volgende manier:

  • Start de railconsole in de testomgeving in sandbox-modus.

    rails console -e test --sandbox
    

Je hebt dit om twee redenen nodig:

  1. Alle wijzigingen die u aanbrengt, worden teruggedraaid.
  2. Als je al wat seed-gegevens hebt, kan het gebeuren dat de fabrieken beginnen met de serialisatie van attributen vanaf 1, maar deze records kunnen al bestaan.

Vervolgens in de console:

  • FactoryBot (werd FactoryGirl genoemd):

    require 'factory_bot'
    
  • Laad de fabrieksdefinities:

    FactoryBot.find_definitions
    
  • Voeg de FactoryBot-methoden toe om te voorkomen dat alle oproepen naar FB worden voorafgegaan door FactoryBot(createin plaats van FactoryBot.create):

    include FactoryBot::Syntax::Methods
    

P.S. Voor fabrication gemkun je de definities in de rails console laden met:

Fabrication.manager.load_definitions

Ook require 'faker'als je het gebruikt.


Antwoord 2, autoriteit 18%

Om dit probleem op te lossen, moet u ervoor zorgen dat de fabrieksbot-edelsteen is opgegeven in uw Gemfile, vergelijkbaar met deze

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

Vervolgens bundle install.

Dit zou de FactoryBot-klasse beschikbaar moeten maken in de ontwikkelconsole.

Hopelijk helpt dit.


Antwoord 3, autoriteit 12%

Je moet require 'factory_bot_rails'nodig hebben, wat de eigenlijke edelsteen is die door Rails wordt gebruikt. Dat juweeltje bevat de Factory Bot-bibliotheek, waardoor FactoryBotbeschikbaar wordt.

Je kunt dit doen, of je Gemfile bijwerken om het bij het opstarten te vereisen, zoals in het antwoord van muttonlamb.


Antwoord 4, autoriteit 2%

Als je het elke keer dat je de console start beschikbaar wilt hebben, kun je dit stukje code bovenaan je config/environments/development.rb toevoegen:

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

Je kunt nu de ingebouwde helpers direct na het starten van de console gebruiken, bijvoorbeeld:

company = create(:company)

Other episodes