I'm trying to reuse a helper method in all my factories, however I cannot get it to work. Here's my setup:
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
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:
include Tests::Helpers at every level of my factory (before the define, between define and factory :user and inside factory :user)spec_helper.rb, I have the following already: config.include Tests::Helpers and it gives me access to random_string in my specsI have also read the following links without success:
What about a mere:
module Tests
  module Helpers
    # not guaranteed to be unique, useful for generating passwords
    def self.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
Then:
FactoryGirl.define do
  factory :user do
    sequence(:username) { |n| "username-#{n}" }
    password Tests::Helpers.random_string
    password_confirmation { |u| u.password }
  end
end
Ok, got it :) Do as follows:
module FactoryGirl
  class DefinitionProxy
    def random_string
     #your code here
    end
  end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With