我正在尝试在工厂内部调用辅助方法,但始终以找不到方法的方式返回。这是助手方法
/ 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和文件本身中要求,但是所有都返回相同的结果。我也尝试过不包含模块名称和方法名称的尝试,但这也不起作用。这可能吗?
在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