I'm trying to reuse a helper method in all my factories, however I cannot get it to work. Here's my setup:
Helper module (in 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
A factory (in 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
If I run my tests (with rake spec
), I get the following error wherever I create a user with Factory(:user)
:
Failure/Error: Factory(:user)
ArgumentError:
Not registered: random_string
What do I have to do to be able to use random_string
in my factories?
I have tried the following:
- using
include Tests::Helpers
at every level of my factory (before thedefine
, betweendefine
andfactory :user
and insidefactory :user
) - in
spec_helper.rb
, I have the following already:config.include Tests::Helpers
and it gives me access torandom_string
in my specs - simply requiring the file in my factory
I have also read the following links without success: