FactoryGirl“create_list”未保存到数据库

时间:2014-01-23 17:10:02

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

我在FactoryGirl中看到一些奇怪的行为,似乎与文档相矛盾。在Rspec测试中,如果我这样做;

static_groups = FactoryGirl.create_list(:static_group,5)
expect(StaticGroup.count).to eq(5)                                                              

测试失败(预期:5,得到:0)。如果我添加明确的记录保存;

static_groups = FactoryGirl.create_list(:static_group,5)
static_groups.each do |grp|
  grp.save
end
expect(StaticGroup.count).to eq(5)                                                              

测试通过!我认为在工厂女孩的“创造”应该为你做一个保存,但在这种情况下,显然不保存记录,可以立即保存!甚至更奇怪,如果我在第一个例子中查询对象(我没有明确保存),他们都有id,所以他们肯定是在和数据库交谈!!

修改

在任何人指出狡猾的“count”语法之前,我正在使用DataMapper作为ORM,这是一种有效的计数方法:)

1 个答案:

答案 0 :(得分:0)

唉 - 噩梦。

最终弄清楚它是什么 - “StaticGroup”类使用STI来计算其类型。这有点复杂,因为它挂钩到两个数据库,并且类结构在遗留世界和新世界之间发生了变化。

长话短说,我将我的集团工厂复制/粘贴到静态组工厂并忘记更改类型。 “save”方法中有一个钩子可以为我排序,当工厂女孩创建对象时它没有被触发。