Rails 콘솔에서 FactoryGirl의 팩토리를 사용하는 방법


91

개발 환경에서 Rails 콘솔을 사용하고 있으며 팩토리를 사용하고 싶습니다. 액세스 권한을 얻으려면 어떻게해야합니까?

나는 require "FactoryGirl"어떤 반환 을 시도했다

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

간단한 구글의 여러 결과 검색 리드. 이것을 시도해 보셨습니까? 작동하지 않습니까? 지금까지 뭐 해봤 어?
wpp aug.

1
모두 테스트 중입니다. 개발 중입니다
Eric Baldwin

2
FactoryGirl 상수를 요구하는 대신 require 'factory_girl'으로 시작하고 싶을 것입니다.
Rob Dawson

1
현재 시간에 대한 조정 - 당신이 시작할 수 있습니다 rails c다음 것은 할require 'factory_bot'
RudyOnRails

답변:


39

이 문제를 해결하려면 팩토리 봇 gem이 다음과 같이 Gemfile에 지정되어 있는지 확인하십시오.

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

그런 다음 bundle install.

그러면 개발 콘솔에서 FactoryBot 클래스를 사용할 수 있습니다.

도움이 되었기를 바랍니다.


2
대신 이와 같이 gemfile에 FactoryGirl을 추가하면 gem 'factory_girl_rails', :require => false처음부터 개발 환경을 설정하려는 모든 사람에게 오류가 발생하므로 조심하십시오.
Epigene

4
허용 대답이 있어야 할이 응답 작품,하지만 rails console test, 당신이 개발 환경에서 테스트 패키지를 사용하도록 Gemfile을 업데이트 할 필요가 없습니다 있도록 테스트 환경에서 콘솔을 만들 수 있습니다
딜런 피어스에게

197

다음과 같은 방법으로 수행합니다.

  • 샌드 박스 모드의 테스트 환경에서 Rails 콘솔을 시작합니다.

    rails console -e test --sandbox
    

다음 두 가지 이유로 필요합니다.

  1. 모든 변경 사항이 롤백됩니다.
  2. 이미 일부 시드 데이터가있는 경우 팩토리가 1부터 속성 직렬화를 시작하지만 이러한 레코드가 이미 존재할 수 있습니다.

그런 다음 콘솔에서 :

  • FactoryBot 필요 (이전 이름은 FactoryGirl) :

    require 'factory_bot'
    
  • 팩토리 정의를로드합니다.

    FactoryBot.find_definitions
    
  • FB에 대한 모든 호출에 FactoryBot( create대신 FactoryBot.create) 접두사를 붙이지 않도록 FactoryBot 메서드를 포함합니다 .

    include FactoryBot::Syntax::Methods
    

추신 : Fabrication gem의 경우 다음을 사용하여 rails 콘솔에 정의를로드 할 수 있습니다.

Fabrication.manager.load_definitions

또한 require 'faker'그것을 사용하는 경우.


마지막 줄이되어야 require 'ffaker'합니까?
Dihedral

어떤 보석을 사용 하느냐에 따라 다르지만, 최근에는 ffaker가 더 널리 사용된다는 데 동의합니다.
알렉산더

나는 정의되지 않은 방법에 직면 한 fixture_file_upload의 부재로 인해 발생 된 문제, ActionDispatch::TestProcess당신은 또한 그것을 포함하여 고려할 수 있도록, 모듈
divideByZero

1
콘솔을 많이 다시 시작하는 경우 여기에 한 줄짜리가 있습니다.require "factory_bot_rails"; include FactoryBot::Syntax::Methods; require 'ffaker'
Mirror318

2
: 레일 6.0은 다음과 같이 콘솔 실행을 위해rails c -e test --sandbox
데이비드 모랄레스

26

당신은 필요 require 'factory_bot_rails'레일에 의해 사용되고 실제 보석이다. 이 gem에는 Factory Bot 라이브러리가 포함되어 FactoryBot사용할 수 있습니다.

이 작업을 수행하거나 muttonlamb의 답변에서와 같이 시작시 필요하도록 Gemfile을 업데이트 할 수 있습니다.


공장에서 Faker를 사용하고 있었기 때문에 require 'faker'.
albertski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.