小编fow*_*uck的帖子

has_many同时尊重factory_girl中的构建策略

情况

# Models
class User < ActiveRecord::Base
  has_many :items 
end 

class Items < ActiveRecord::Base
  belongs_to :user 
  validates_presence_of :user_id 
end 

# Factories
Factory.define(:user) do |u| 
  u.name "foo" 
end 

Factory.define(:user_with_items, :parent => :user) do |u| 
  u.items {|items| [items.association(:item), items.association(:item)]} 
end

Factory.define(:item) do |i| 
  i.color "red" 
end 

Factory.define(:item_with_user, :parent => :user) do |i| 
  i.association(:user) 
end
Run Code Online (Sandbox Code Playgroud)

问题

如果你运行@user = Factory(:user_with_items)然后@user.items包含两个项目.问题是项目与数据库中的用户无关.如果你重新加载关联,@user.items(true)那么你会得到一个空数组.我知道你可以手动构建它们或者自己创建辅助方法来构建对象图,但我想避免这种情况.

所以,我的问题是如何在尊重构建策略的同时在factory_girl中建立一个has_many关系?

ruby unit-testing ruby-on-rails factory-bot

20
推荐指数
3
解决办法
7392
查看次数

标签 统计

factory-bot ×1

ruby ×1

ruby-on-rails ×1

unit-testing ×1