ruby - 如何在 FactoryGirl 工厂上定义方法?

标签 ruby factory-bot

如何定义一个正常的方法用于我的 FactoryGirl 工厂之一?例如:

FactoryGirl.define do
  def silly_horse_name
   verbs = %w[brunches dribbles haggles meddles]
   nouns = %w[landmines hamlets vandals piglets]
   "#{verbs.sample} with #{nouns.sample}".titleize
  end

  factory :racehorse do
    name { silly_horse_name } # eg, "Brunches with Landmines"

    after_build do |horse, evaluator|
      puts "oh boy, I built #{silly_horse_name}!"
    end

  end
end

这样做根本不会调用silly_horse_name;如果它被重新定义为 raise 'hey!',则什么也不会发生。

我正在使用 FactoryGirl 2.5.2。

最佳答案

我能找到的不污染全局命名空间的最佳解决方案是在模块中定义它。例如,

module FactoryHelpers
  extend self

  def silly_horse_name
    ...
  end
end

FactoryGirl.define do
  factory :racehorse do
    name { silly_horse_name }
  end
end

Source

关于ruby - 如何在 FactoryGirl 工厂上定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760704/

相关文章:

ruby - 如何在 Ruby 中编写 switch 语句

ruby-on-rails - 工厂女孩 : How do define a factory without passing parameters

ruby-on-rails - rails : How to retrieve all model objects along with its foreign relation model with ActiveRecord?

ruby-on-rails - 如何为电子邮件设置 Devise 发件人姓名

ruby-on-rails - 工厂女孩 : Assigning a value of false to a boolean

ruby - 如何使用factory_bot构建缺少访问器方法的对象?

ruby-on-rails - 带有 FactoryGirl 显式主题的 RSpec

ruby-on-rails - 将 factory_girl 与 PaperClip 4.0 结合使用

ruby-on-rails - 批准rails中一个对象的类类型

ruby - 遍历数组的前 n 个元素