FactoryGirl'deki fabrikaları ray konsolunda nasıl kullanırım


91

Geliştirme ortamında ray konsolu kullanıyorum ve fabrikaları kullanmak istiyorum. Onlara nasıl erişebilirim?

require "FactoryGirl"Hangi dönüşleri denedim

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

Bir basit google birkaç sonuçlarına arama kurşun. Bunları denedin mi? Çalışmıyorlar mı? Şimdiye kadar ne denedin?
wpp

1
Bunların hepsi test aşamasında, geliştirme aşamasında yapmak istiyorum
Eric Baldwin

2
FactoryGirl sabitini zorunlu kılmak yerine muhtemelen bir 'factory_girl' ile başlamak istersiniz.
Rob Dawson

1
şimdiki zamanlara göre ayarlama - başlayıp rails csonra yapabilirsinizrequire 'factory_bot'
RudyOnRails

Yanıtlar:


39

Bu sorunu çözmek için fabrika bot mücevherinin Gemfile'nizde buna benzer şekilde belirtildiğinden emin olun.

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

Sonra bundle install.

Bu, FactoryBot sınıfını geliştirme konsolunda kullanılabilir hale getirmelidir.

Bu yardımcı olur umarım.


2
FactoryGirl'i bunun yerine gemfile'a eklemek gem 'factory_girl_rails', :require => false, geliştirme ortamını sıfırdan kurmaya çalışan herkes için hatalara neden olur, dikkatli olun.
EPIGENE

4
Bu cevap işe yarıyor, ancak kabul edilen cevap rails console test, test ortamında bir konsol oluşturmanıza izin verecek, böylece geliştirme ortamında bir test paketi kullanmak için Gemfile'ınızı güncellemenize gerek kalmayacak
Dylan Pierce,

199

Bunu şu şekilde yapıyorum:

  • Sandbox modunda test ortamında raylar konsolunu başlatın.

    rails console -e test --sandbox
    

Buna iki nedenden dolayı ihtiyacınız var:

  1. Yaptığınız tüm değişiklikler geri alınır.
  2. Halihazırda bazı tohum verileriniz varsa, fabrikalar özniteliklerin serileştirilmesine 1'den başlayabilir, ancak bu kayıtlar zaten mevcut olabilir.

Ardından konsolda:

  • FactoryBot gerektir (FactoryGirl olarak adlandırılıyordu):

    require 'factory_bot'
    
  • Fabrika tanımlarını yükleyin:

    FactoryBot.find_definitions
    
  • FB'ye yapılan tüm çağrıların FactoryBot( createyerine FactoryBot.create) öneklenmesini önlemek için FactoryBot yöntemlerini dahil edin :

    include FactoryBot::Syntax::Methods
    

PS Fabrikasyon mücevheri için tanımları ray konsoluna şu şekilde yükleyebilirsiniz:

Fabrication.manager.load_definitions

Ayrıca require 'faker'kullanırsanız.


Bu son satır olmalı require 'ffaker'mı?
Dihedral

Bu, hangi cevheri kullandığınıza bağlıdır - faker veya ffaker, ancak son zamanlarda ffaker'ın daha yaygın olarak kullanıldığını kabul ediyorum.
Alexander

Ben tanımsız yöntem karşılaştık fixture_file_uploadyokluğunda neden oldu sorunu, ActionDispatch::TestProcessaynı zamanda onu da dahil düşünebilirsiniz böylece, modülün
divideByZero

1
Konsolu çok require "factory_bot_rails"; include FactoryBot::Syntax::Methods; require 'ffaker'
sık yeniden başlatıyorsanız

2
Rails 6.0 için konsolu şu şekilde çalıştırın:rails c -e test --sandbox
David Morales

26

Sen gerek require 'factory_bot_rails'Raylar tarafından kullanılmakta olan gerçek bir mücevher olan. Bu mücevher, Fabrika Bot kütüphanesini de içerecek ve kullanıma sunacak FactoryBot.

Bunu yapabilir veya Gemfile'ınızı muttonlamb'ın cevabında olduğu gibi başlangıçta gerektirecek şekilde güncelleyebilirsiniz.


Fabrikalarımda Faker kullandığım için koşmak zorunda kaldım require 'faker'.
albertski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.