2016-12-20 2 views
1
나는 다음과 같은 공장 만들기 위해 FactoryGirl 보석을 사용하고

: 그래서오류 5

FactoryGirl.define do 
    conta_origem = FactoryGirl.create(:conta_pessoa_fisica) 
    conta_destino = '' 
    tipos = LogTransacao.tipos.keys 
    params = { conta_origem: conta_origem, conta_destino: conta_destino, tipo: tipos[0] } 
    codigo_transacional = LogTransacaoHelper::Gerador.codigo_alphanumerico(params) 

    factory :log_transacao_carga, class: LogTransacao do 
    codigo_transacional { codigo_transacional } 
    tipo { tipos[0] } 
    estornado { false } 
    valor { 0 } 
    conta_origem_id { conta_origem.id } 
    conta_origem_valor_antes_transacao { conta_origem.saldo } 
    end 
end 

conta.rb 
FactoryGirl.define do 
    factory :conta do 
    nome { Faker::Name.name } 
    saldo { 0 } 
    status { 1 } 

    factory :conta_pessoa_fisica do 
     pessoa_type { 'PessoaFisica' } 
     pessoa_id { FactoryGirl.create(:pessoa_fisica).id } 
    end 
    end 
end 

을, 나는 다음과 같은 오류를 받고 있어요 :

find': Factory not registered: pessoa_fisica 

나는 공장의 내부 FactoryGirl.create를 사용할 때이 문제가 더 발생합니까 'log_transacao_carga'.

conta_origem_id : 나는이 작업을 수행 할 경우 {FactoryGirl.create (conta_pessoa_fisica) .ID는}

그러나, 나는 conta_origem_valor_antes_transacao을 채우기 위해 같은 공장을 사용할 수 없습니다. 따라서 log_transacao_carga 팩토리 전에이 팩토리를 만들어야합니다.

누군가 나를 도와 줄 수 있습니까? 당신이 그것을 (LogTransacao)에 클래스 이름을 전달하기 때문에

답변

0

This problem does no occur when I use the FactoryGirl.create inside of the factory ':log_transacao_carga'.

log_transacao_carga 작품.

내포 된 팩터를 수행하는 특별한 이유가 있다면 trait입니까?) build(:conta, :conta_pessoa_fisica로 전화 한 후

FactoryGirl.define do 
    factory :conta do 
    nome { Faker::Name.name } 
    saldo { 0 } 
    status { 1 } 

    trait :conta_pessoa_fisica do 
     pessoa_type { 'PessoaFisica' } 
     pessoa_id { FactoryGirl.create(:pessoa_fisica).id } 
    end 
    end 
end 

과 : 당신은 너무 같은 FactoryGirl의 trait를 사용할 수 있습니다. 이 방법을 사용하면 필자가 더 잘 읽을 수 있고 부모 팩토리 속성을 상속하고 특정 컨텍스트에서 필요한 항목을 애드온/편집 할 수 있습니다.

체크 아웃 FactoryGirl 워드 프로세서 : 여기 http://www.rubydoc.info/github/thoughtbot/factory_girl/FactoryGirl/Syntax/Methods

이 FactoryGirl의 제작자에서 좋은 소개 영상입니다 : https://thoughtbot.com/upcase/videos/factory-girl

+0

이봐, @Dimitry_N, 나는이 특성을 확인합니다. 나는 항상 중첩 된 공장을 사용했기 때문에 그것을 사용하지 않았다. 그리고 그것은이 순간 이전까지 항상 작동한다. 특성을 모르므로 사용하려고합니다. 도와 주셔서 감사합니다. –