2015-04-05 7 views
6

Sto considerando la migrazione di molti mock da FactoryGirl alla gemma Fabrication.Come implementare: with_trait using Fabrication

Tuttavia, finora non sono riuscito a trovare alcuna informazione sull'implementazione del tratto tratto disponibile in FactoryGirl.

Esiste un modo generalmente accettato per eseguire questa operazione con Fabrication?

Grazie in anticipo per eventuali risposte o informazioni.

risposta

6

La fabbricazione non ha lo zucchero di sintassi per i tratti. Per quanto ho capito, è solo un modo per raggruppare e definire l'ereditarietà.

Nel caso di questa fabbrica: (che ho tirato da this blog post)

FactoryGirl.define do 
    factory :todo_item, aliases: [:incomplete_todo_item] do 
    name 'Pick up a gallon of milk' 
    complete false 

    factory :complete_todo_item do 
     complete true 
    end 
    end 
end 

Si potrebbe fare la stessa cosa in Fabrication come questo:

Fabricator(:todo_item, aliases: :incomplete_todo_item) do 
    name 'Pick up a gallon of milk' 
    complete false 
end 

Fabricator(:complete_todo_item, from: :todo_item) do 
    complete true 
end 

Se si decide di convertirvi può inviare al mailing list con domande specifiche. Sono sempre felice di aiutare a capire come far funzionare le cose o migliorare l'efficienza dei fabbricanti.

+0

Grazie Paul, aiuta efficacemente a evitare la duplicazione e a mantenere le fabbriche di derisione in FactoryGirl DRY. È questa duplicazione che mi riguarda su Fabrication – ocodo

+0

Non penso che i tratti aggiungano alcun valore reale. I costruttori che ho esposto sopra sono ASCIUTTI e più concisi delle loro controparti basate sui tratti. Potresti darmi un esempio di cosa stai facendo con i tratti che lo rendono davvero utile? Non ho mai visto un esempio non banale di utilizzo. –

+0

Li stiamo usando per configurare modelli complessi che avranno differenze piccole (ma cruciali), che influenzano il modo in cui viene elaborata la logica aziendale. Per implementarli come oggetti Fabricator separati, almeno mi sembra necessario richiedere una grande quantità di fogli duplicati. – ocodo