¿Cómo puedo definir un método normal para usar en una de mis fábricas FactoryGirl? Por ejemplo:¿Cómo puedo definir un método en una fábrica de FactoryGirl?
FactoryGirl.define do
def silly_horse_name
verbs = %w[brunches dribbles haggles meddles]
nouns = %w[landmines hamlets vandals piglets]
"#{verbs.sample} with #{nouns.sample}".titleize
end
factory :racehorse do
name { silly_horse_name } # eg, "Brunches with Landmines"
after_build do |horse, evaluator|
puts "oh boy, I built #{silly_horse_name}!"
end
end
end
Hacerlo de esta manera no llama silly_horse_name
en absoluto; si se redefine a raise 'hey!'
, no ocurre nada.
Estoy usando FactoryGirl 2.5.2.
Eso funciona. Va al espacio de nombres global, pero solo está definido en el entorno de prueba, y si el nombre es lo suficientemente único, puede no importar. –
No me gusta esta solución en absoluto, pero probé y no pude encontrar otra solución. Lo que más me confunde es que [la documentación de FG] (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#callbacks) implica que esto es posible usando este ejemplo: 'after (: build) {| usuario | do_something_to (user)} ' –