ruby - 如何在 Fabrication 中对属性进行分组,就像在 Factory_Girl 中使用特征一样

标签 ruby ruby-on-rails-4 factory-bot fabrication-gem

有人可以通过代码告诉我如何使用 Fabrication 转换这个特定的 factory_girl 代码吗?

factory :user do
  name "Friendly User"
  login { name }

  trait :male do
    name   "John Doe"
    gender "Male"
    login { "#{name} (M)" }
  end

  trait :female do
    name   "Jane Doe"
    gender "Female"
    login { "#{name} (F)" }
  end

  trait :admin do
    admin true
    login { "admin-#{name}" }
  end

  factory :male_admin,   traits: [:male, :admin]   # login will be "admin-John Doe"
  factory :female_admin, traits: [:admin, :female] # login will be "Jane Doe (F)"
end

如果你看到这个Trait in Fabrication 继承是这里的方法之一,但问题是我们无法为其定义Fabricator,因为它们不是模型。谁能告诉我如何在 Fabrication 中对属性进行分组?

最佳答案

你在制造中这样表达:

Fabricator :user do
  admin false
  gender 'Female'
  name "Friendly User"
  login do |attrs|
    if attrs[:admin]
      "admin-#{attrs[:name]}"
    else
      "#{attrs[:name]} (#{attrs[:gender][0]})"
    end
  end
end

Fabricator(:female_admin, from: :user) do
  admin true
end

Fabricator(:male_admin, from: :female_admin) do
  gender 'Male'
end

关于ruby - 如何在 Fabrication 中对属性进行分组,就像在 Factory_Girl 中使用特征一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087993/

相关文章:

ruby - 确定 S3 存储桶区域

ruby-on-rails - 如何向在线用户展示

mysql - 将新的 Rails 应用程序连接到现有的 MySQL 数据库

css - 如何从 rails 中找到未使用的 CSS?自重不工作

ruby-on-rails - 具有不同名称的 FactoryGirl 协会

ruby - 即使提供了记录,FactoryBot 也会创建记录

ruby-on-rails - rails : Case insensitive params hash keys?

ruby - 使用哈希中的单个键和 block

ruby-on-rails - Factory_Girl Rspec 的 "Uninitialized constant User"

ruby - 线性组合优化