ruby - Factory Girl - HABTM 的可变数量的关联对象

标签 ruby unit-testing tdd factory-bot

如果我有 2 个模型 - 例如。商店和品牌,我想为拥有 3 到 10 个品牌的商店建模,使用工厂女郎做这件事的好方法是什么?

factory :brand do |b|
  b.name "Hip Brand"
  b.url  { "http://#{name}.com" }
end    

factory :shop do |s|
  name        "Cool Shop"
  after_create {
    count = 0
    (5..10).to_a.sample.times do
      count += 1
      Factory(:brand, :shops => s, :name => "brand #{count}")
    end
  }
end

这显然不是这样做的方法,但应该让我了解我想要实现的目标!

最佳答案

我现在无法测试,但这应该可以:

Factory.define :brand, :class => Brand do |b|
  b.name  "Hip Brand"
  b.url   { "http://#{name}.com" }
end    

Factory.define :shop, :class => Shop do |s|
  s.name     "Cool Shop"
  s.brands   { 
    count = 0
    Array(5..10).sample.times.map do
      Factory.create(:brand, :name => "Brand #{count += 1}")
    end
  }
end

或者这个:

Factory.define :shop, :class => Shop do |s|
  s.name        "Cool Shop"
  s.brand_ids   { 
    count = 0
    Array(5..10).sample.times.map do
      Factory.create(:brand, :name => "Brand #{count += 1}")[:id]
    end
  }
end

关于ruby - Factory Girl - HABTM 的可变数量的关联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268609/

相关文章:

unit-testing - 测试类似的逻辑

unit-testing - 使用 lambda 的条件最小起订量返回值

java - 这可以用 iBatis + spring 来做吗

database - 数据库相关应用程序的自动化单元测试

linq - Moq 测试 LINQ Where 查询

ruby - cucumber 特征和步骤定义

Ruby 对不同数据类型按多字段多方向排序

ruby-on-rails - 如何使用字符串插值创建动态方法?

ruby - == 在 Ruby 中有什么作用?

c# - TDD、DDD 和封装