Como incluir um módulo em uma fábrica factory_gir
Estou tentando reutilizar um método auxiliar em todas as minhas fábricas, mas não consigo fazê-lo funcionar. Aqui está a minha configuração:
ódulo Helper (em spec / support / test_helpers.rb)module Tests
module Helpers
# not guaranteed to be unique, useful for generating passwords
def random_string(length = 20)
chars = ['A'..'Z', 'a'..'z', '0'..'9'].map{|r|r.to_a}.flatten
(0...length).map{ chars[rand(chars.size)] }.join
end
end
end
Uma fábrica (em spec / factories / users.rb)FactoryGirl.define do
factory :user do
sequence(:username) { |n| "username-#{n}" }
password random_string
password_confirmation { |u| u.password }
end
end
Se eu executar meus testes (comrake spec
), Recebo o seguinte erro sempre que crio um usuário comFactory(:user)
:
Failure/Error: Factory(:user)
ArgumentError:
Not registered: random_string
O que tenho que fazer para poder usarrandom_string
nas minhas fábricas?
Tentei o seguinte:
usinginclude Tests::Helpers
em todos os níveis da minha fábrica (antes dadefine
, entredefine
efactory :user
e dentrofactory :user
)dentrospec_helper.rb
, Eu já tenho o seguinte:config.include Tests::Helpers
e me dá acesso arandom_string
nas minhas especificações simplesmente exigir o arquivo na minha fábricaTambém li os seguintes links sem êxito:
Define métodos auxiliares em um móduloodos diferentes de reutilização de código no RSpec