工厂女孩多个值

时间:2015-10-14 13:54:56

标签: ruby-on-rails ruby factory-bot

我知道我可以给工厂女孩这样的静态数据值:

  factory :post do
    title 'New post'
    number 7
  end

但是,如果每个标题和数字都有多个值,该怎么办?如果标题是'New Post','Old Post','Hello'并且数字是7,8,9怎么办?我如何将这些数据传递给工厂女孩?我应该使用数组还是使用多个do end block?

3 个答案:

答案 0 :(得分:3)

  1. 如果要将值作为参数传递:

    factory :post do
      title 'Default Title'
    end
    
    # create(:post, title: 'Custom Title')
    
  2. 如果您只想随机化值,那么只需:

    factory :post do
      title {  ['New Post', 'Old Post', 'Hello'].sample }
    end
    

答案 1 :(得分:1)

您可以这样做:

posts_attrs = [{ title: 'new', number: 6}, { title: 'old' }]

posts_attrs.each do |post_attrs|
  factory :post do
    title post_attrs[:title] || 'default title'
    number post_attrs[:number] || 1
  end
end

答案 2 :(得分:1)

对于数字,您可以使用FactoryGirl序列:

FactoryGirl.define do
  sequence :email do |n|
    "person#{n}@example.com"
  end
end

要生成一些随机字符串,有一个gem Faker

FactoryGirl.define do
  factory :post do
    title { Faker::Lorem.sentence }
  end
end

Faker可用于生成随机电子邮件,字符串,电子商务项目,地址和许多其他内容,请参阅https://github.com/stympy/faker