私は次の問題があります。Rails 5 - FactoryGirlでのエラー
私はこのような変数を使用してファクトリー・ガールのRailsを使用しています:
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_matrizが工場名定義の外で宣言されています。
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
そしてこれはデ・工場からの二つの属性は以下のようにいくつかの関連付けから2つの値を持っている必要がありますので、これが必要です関連:
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には、データベースと一致することがある名前の制限があり、エラーが発生したことを示します。 チップをありがとう。私もシーケンスを使用しますが、フィールドには数字を付けることができないので、この場合は文字で使用します。 –