我如何使工厂可以使用辅助方法? (Rails,Rspec)

问题描述 投票:1回答:1

我正在尝试在工厂内部调用辅助方法,但始终以找不到方法的方式返回。这是助手方法

/ spec / helpers / factories.rb

module Helpers
  module Factories

    def array_of_fakers(faker_class, field, number_of_elements)
      faker_array = Array.new
      number_of_elements.times do
        factory_array.push(class_eval(faker_class).send(field))
      end
      faker_array
    end

  end
end

被这样称呼...

factory :salesman do
    clients { Helpers::Factories.array_of_fakers("Faker::Company", "name", rand(1..5)) }
    ...
end

我已经尝试在rails_helper,spec_helper和文件本身中要求,但是所有都返回相同的结果。我也尝试过不包含模块名称和方法名称的尝试,但这也不起作用。这可能吗?

ruby-on-rails ruby rspec factory-bot
1个回答
0
投票

FactoryBot::DefinitionProxy中包括您的帮助程序模块:

# spec/helpers/factories.rb

module Helpers
  module Factories

    def array_of_fakers(faker_class, field, number_of_elements)
      # ...
    end
  end
end

FactoryBot::DefinitionProxy.send(:include, Helpers::Factories)
# spec/factories/salesman.rb

factory :salesman do
  clients { array_of_fakers("Faker::Company", "name", rand(1..5)) }
  ...
end
© www.soinside.com 2019 - 2024. All rights reserved.