首页 > 解决方案 > FactoryBot 动态属性

问题描述

在 5.0 FactoryBot 版本中,静态属性将被弃用,而必须使用动态属性。所以:

factory :product do
  name 'Some Product'
end

将需要成为:

factory :product do
  name { 'Some Product' }
end

但是,在我的代码中,我简化了具有相同名称但使用循环增加计数的属性的分配:

factory :product do    
  (1..6).each do |n|
    send "image_#{n}", "test_image.jpeg"
  end
end 

本质上,在我的产品模型中,我有 6 张图片(image_1、image_2 等)。在上面的代码中,我循环遍历每个并将“test_image.jpeg”分配给每个。如何使用动态属性来做到这一点?

标签: rubyfactory-bot

解决方案


几乎相同的方式。只需在调用 send 后指定一个块:

factory :product do    
  (1..6).each do |n|
    send("image_#{n}") { "test_image.jpeg" }
  end
end

推荐阅读