Ruby on rails 工厂女孩多重价值观

Ruby on rails 工厂女孩多重价值观,ruby-on-rails,ruby,factory-bot,Ruby On Rails,Ruby,Factory Bot,我知道我可以给factory girl这样的静态数据值: factory :post do title 'New post' number 7 end 但是,如果每个标题和数字都有多个值呢。如果标题是“新帖子”、“旧帖子”、“你好”,数字是7、8、9,该怎么办。我如何将数据传递给工厂女孩?我应该使用阵列还是使用多个do端块?您只需执行以下操作: posts_attrs = [{ title: 'new', number: 6}, { title: 'old' }] p

我知道我可以给factory girl这样的静态数据值:

  factory :post do
    title 'New post'
    number 7
  end
但是,如果每个标题和数字都有多个值呢。如果标题是“新帖子”、“旧帖子”、“你好”,数字是7、8、9,该怎么办。我如何将数据传递给工厂女孩?我应该使用阵列还是使用多个do端块?

您只需执行以下操作:

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
您可以简单地执行以下操作:

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
  • 如果要将值作为参数传递:

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

    factory :post do
      title {  ['New Post', 'Old Post', 'Hello'].sample }
    end
    
  • 如果要将值作为参数传递:

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

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

  • 对于数字,您可以使用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可用于生成随机电子邮件、字符串、电子商务项目、地址和许多其他内容,有关可使用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可用于生成随机电子邮件、字符串、电子商务项目、地址和许多其他内容,请参见

    为什么标题有3个值?0o@AndreyDeineko这只是一个例子。您可以用名称或其他任何内容替换标题。问题是相同的-为什么您要为属性设置一组(实际上,不止一个)值?(metamessage-拯救)为什么标题会有3个值?0o@AndreyDeineko这只是一个例子。您可以用名称或其他任何内容替换标题。问题是相同的-为什么您要为属性设置一组(实际上,不止一个)值?(元消息-救援)