Soy nuevo en FactoryGirl y estoy intentando el siguiente escenario simple?Factory Girl crear asociación con el objeto existente
factory :female, :class => Gender do
code 'Female'
end
factory :male, :class => Gender do
code 'Male'
end
factory :papas, :class => Customer do
first_name 'Jim'
last_name 'Papas'
association :gender, :factory => :male, :strategy => :build
end
factory :dumas, :class => Customer do
first_name 'Mary'
last_name 'Dumas'
association :gender, :factory => :female, :strategy => :build
end
Luego, en mi prueba:
create(:male)
create(:female)
create(:papas)
create(:dumas)
Tenga en cuenta que la clase de atención al cliente tiene un assocation belongs_to
Gender
clase y una regla de validación que dice que gender_id
debe estar presente. También tengo una validación en la clase Gender
por singularidad en el código.
En create(:papas)
declaración anterior, en mi prueba, me sale el error de que el Customer
que se va a crear no es válido, porque es gender_id
nil
.
Si quito la asociación :strategy => :build
en Customer
:papas
fábrica con el género, entonces voy a tener un error, que al intentar crear :papas
, el código para el género ya existe.
¿Qué debo hacer para que mis pruebas creen los datos como se requiere arriba?
Tenga en cuenta que quiero tener géneros creados también sin clientes, en otras pruebas. No me diga que cree clientes con los comandos de creación de fábrica y deje que los clientes creen los géneros al mismo tiempo. Esto no funcionará si intento crear dos clientes del mismo género también.
Además, tiene que haber una respuesta mejor que la que:
@male = create(:male)
@female = create(:female)
create(:papas, :gender => @male)
create(:dumas, :gender => @female)
(.? Al utilizar accesorios de estas cosas estaban listas fuera de la caja tornaré de nuevo a los accesorios)
Aunque son bastante detallados frente a los accesorios, su respuesta es correcta. He estado usando factory girl los últimos dos meses y todavía mi próximo proyecto será con accesorios. –
La ventaja que puede encontrar con las fábricas es si necesita crear muchos clientes diferentes. Puede tener una fábrica de male_customer y de female_customer y usarlas como las fábricas principales para sus diferentes clientes, lo que reduce la verbosidad considerablemente. Me alegro de que funcionó bien! – Shadwell