다음 문제가 있습니다. 나는이 같은 변수를 공장 소녀 레일을 사용하고레일 5 - FactoryGirl 오류
: conta_destino_matriz는 공장 이름 정의 외부에 선언
FactoryGirl.define do
conta_destino_matriz = FactoryGirl.create(:conta_pessoa_fisica, saldo: 0)
conta_origem_filial = FactoryGirl.create(:conta_pessoa_fisica, saldo: 1000, ancestry: conta_destino_matriz.id)
codigo_transacional = TransacaoHelper::Gerador.codigo_alphanumerico(
tipo: 'transferencia', conta_origem_id: conta_origem_filial.id, conta_destino_id: conta_destino_matriz.id
)
factory :transacao_transferencia_matriz, class: Transacao do
tipo { 'transferencia' }
valor { '250' }
conta_origem_id { conta_origem_filial.id }
conta_destino_id { conta_destino_matriz.id }
trait :campos_completos do
codigo_transacional { codigo_transacional }
conta_origem_valor_antes_transacao { conta_origem_filial.saldo }
conta_destino_valor_antes_transacao { conta_destino_matriz.saldo }
estornado { false }
codigo_transacional_estornado { nil }
end
end
end
. 드 공장에서 두 개의 속성이 같은 일부 협회에서 두 개의 값을 가질 필요가 있기 때문 필요가있다 :
conta_destino_id { conta_destino_matriz.id }
conta_destino_valor_antes_transacao { conta_destino_matriz.saldo }
그리고 다른 테스트는 동일한 연결 팩토리 conta_pessoa_fisica와 공장을 사용
FactoryGirl.define do
conta_origem_hierarquia_igual = FactoryGirl.create(:conta_pessoa_fisica, saldo: 1000)
conta_destino_hierarquia_igual = FactoryGirl.create(:conta_pessoa_fisica, saldo: 0, ancestry: conta_origem_hierarquia_igual.id)
codigo_transacional_hierarquia_igual = TransacaoHelper::Gerador.codigo_alphanumerico(
tipo: 'transferencia', conta_origem_id: conta_origem_hierarquia_igual.id, conta_destino_id: conta_destino_hierarquia_igual.id
)
conta_origem_hierarquia_diferente = FactoryGirl.create(:conta_pessoa_fisica, saldo: 1000)
conta_destino_hierarquia_diferente = FactoryGirl.create(:conta_pessoa_fisica, saldo: 0)
factory :transacao_transferencia_hierarquia, class: Transacao do
tipo { 'transferencia' }
valor { '250' }
conta_origem_id { conta_origem_hierarquia_igual.id }
conta_destino_id { conta_destino_hierarquia_igual.id }
trait :campos_completos do
codigo_transacional { codigo_transacional_hierarquia_igual }
conta_origem_valor_antes_transacao { conta_origem_hierarquia_igual.saldo }
conta_destino_valor_antes_transacao { conta_destino_hierarquia_igual.saldo }
estornado { false }
codigo_transacional_estornado { nil }
end
trait :diferente do
conta_origem_id { conta_origem_hierarquia_diferente.id }
conta_destino_id { conta_destino_hierarquia_diferente.id }
end
end
end
그리고 이것은이다 연관 :
FactoryGirl.define do
factory :pessoa_fisica do
cpf { Faker::Number.number(11) }
nome { Faker::Name.name }
data_nascimento { Date.today.strftime('%Y-%m-%d') }
factory :pessoa_fisica_invalida do
id { 0 }
cpf { Faker::Number.number(10) }
nome { '' }
data_nascimento { (DateTime.now + 1.day).strftime('%Y-%m-%d') }
end
end
end
: pessoa_fisica 클래스의 'nome'속성에서 발생한 오류가 이미 저장되었습니다. 필드 mus는 유일하고 유일한 문자입니다. 내 테스트 실행하고 호출 할 때
nome { Faker::Name.name }
그래서 : transacao_transferencia_matriz과 : 때때로 transacao_transferencia_hierarquia와 나는, 나는 항상이 오류를 가지고 있다는 그것이,
`raise_validation_error': A validation failed: Nome is already taken (ActiveRecord::RecordInvalid)
그리고 악화라는 오류가 발생했습니다 하지만 가끔은.
나는이 주제를 마치기 위해왔다. 진짜 문제는 FactoryGirl이 데이터베이스를 지우려고했지만 그럴 수 없다는 것이 었습니다. 그래서 그 오류가있었습니다. Faker에는 때로는 데이터베이스와 일치하는 이름의 제한이 있으며 오류가 발생했습니다. 팁 주셔서 감사합니다. 필자도 역시 시퀀스를 사용 하겠지만, 필드에는 숫자가 없으므로이 경우 문자로 사용합니다. –