2012-06-06 37 views
1

我有一個Rails 3應用程序,我正在試圖編寫一個測試用例?當測試用例加載時,我可以看到它正在創建與數據庫中的燈具對應的對象。但是,如果我更改測試用例中的對象或創建另一個對象,則它們不會反映在數據庫中。此外,如果我找到正確發生的新創建的對象。在Rails中測試數據庫中未反映的對象的更改?

這裏發生了什麼?另外,我怎樣才能獲得更改以反映在數據庫中?

+0

你可以分享你的測試用例嗎? – moritz

+0

測試用例是非常簡單的:在這裏面我做 blog.url =「http://newval.com」 blog.save 調試 #我看在數據庫和新的價值並不能反映 – akshat

+0

雖然在調試器,blog.errors.full_messages給你什麼?你如何檢查數據庫中的值? – moritz

回答

3

在您的test_helper.rb中,use_transactional_fixtures選項可能設置爲true。這意味着每個測試都包裝在數據庫事務中。一個事務(在MySQL InnoDB中)必須用「COMMIT」來持久化。 rails測試框架只是沒有這樣做,所以你的數據庫在每次測試後都處於新的狀態。因此,您的更改會回滾。

事務內的更改只能通過啓動它的數據庫連接從外部(在您的案例中爲rails db命令)看到它們不會顯示。

我希望這會有所幫助。

+0

謝謝。太棒了。 – akshat

+0

在java中添加相同的問題,我使用spring框架,當我禁用事務時,更改反映在數據庫上。 – Ayodeji

相關問題