我在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,这是一种有效的计数方法:)
答案 0 :(得分:0)
最终弄清楚它是什么 - “StaticGroup”类使用STI来计算其类型。这有点复杂,因为它挂钩到两个数据库,并且类结构在遗留世界和新世界之间发生了变化。
长话短说,我将我的集团工厂复制/粘贴到静态组工厂并忘记更改类型。 “save”方法中有一个钩子可以为我排序,当工厂女孩创建对象时它没有被触发。