2014-01-23 68 views
3

我在FactoryGirl中看到一些似乎與文檔相矛盾的奇怪行爲。在Rspec測試中,如果我這樣做;FactoryGirl「create_list」不保存到數據庫

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,所以他們肯定已經與數據庫交談了!

編輯

之前有人指出,狡猾的「數」的語法,我使用的DataMapper作爲ORM,這是計數:)

+2

你可以顯示'static_group'工廠的定義。 – vee

+0

數據庫插入是否在test.log中生成? –

+0

謝謝你們提醒我再次檢查工廠 - 發現問題* facepalm * –

回答

0

呃的有效途徑 - 噩夢。

最終弄清楚它是什麼 - 「StaticGroup」類使用STI來確定它的類型。這更復雜一點,因爲它掛鉤到兩個數據庫中,並且在舊世界和新世界之間改變了類結構。

長話短說,我複製/粘貼我的團隊工廠到靜態組工廠,忘記改變類型。 「save」方法中有一個鉤子,它爲我排序,當factorygirl創建對象時它不會被解僱。