2013-04-28 100 views
1

我正在使用rspec來測試,我注意到在運行測試後,它有時會在測試數據庫中留下一些記錄。我不知道爲什麼。我在我的配置文件中將use_transactional_fixtures設置爲true。但是,直到我手動刪除記錄時,它們纔會消失。有沒有人有辦法阻止它?軌道測試數據庫沒有清除一些運行後

編輯;之前我說過只有在測試失敗的時候。這不再是事實。

回答

4

我發現了這個問題。 Before(:all) blocks are not transactional

+0

更好的來源[文檔](https: //www.relishapp.com/rspec/rspec-rails/v/3-5/docs/transactions):*在'before(:all)'中創建的數據不會回滾*。 – 2017-01-22 10:39:37

0

嘗試database_cleaner寶石。

截斷或交易策略將適用於您。

小心:它可以使您的測試套件運行非常緩慢。
通常,在RSpec中正確使用before,after(如果您使用的話)通常很好。

+1

你以前和以後的意思是什麼意思?什麼會不當使用?這不是我每次看到的問題。我只是不知道是什麼會導致它留下記錄,所以我想停止這樣做,而不是添加新的寶石。 – bdwain 2013-04-28 23:54:07

+1

這是測試套件中的事情 - 不管我們怎麼想,數據在數據庫中都會存在,當它不應該時。我幾乎花了好幾天的時間試圖讓工廠工作。上次,我被迫使用這顆寶石,因爲這個。儘管它完成了這項工作。 :) – kiddorails 2013-04-29 17:41:24

+0

我認爲,如果您避免在塊之外和之前/之後創建東西(:所有)(以及其他任何不按每個示例運行的東西,您應該很好 – bdwain 2013-04-29 19:15:05