Как включить модуль в фабрику factory_girl?

Я пытаюсь повторно использовать вспомогательный метод на всех своих фабриках, но не могу заставить его работать. Вот моя установка:

Вспомогательный модуль (в 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

Фабрика (в 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

Если я запускаю свои тесты (с rake spec ), я получаю следующую ошибку всякий раз, когда создаю пользователя с Factory (: user) :

 Failure/Error: Factory(:user)
 ArgumentError:
   Not registered: random_string

Что мне нужно сделать, чтобы иметь возможность использовать random_string в моем фабрики?

Я пробовал следующее:

  • используя include Tests :: Helpers на каждом уровне моей фабрики (до define , между define ] и factory: пользователь и внутри factory: пользователь )
  • в spec_helper.rb , у меня уже есть следующее: config.include Tests :: Helpers , и он дает мне доступ к random_string в моих спецификациях
  • , просто требуя файл на моем заводе

Я также безуспешно читал следующие ссылки:

15
задан mbillard 26 October 2011 в 19:26
поделиться