2012-11-11 95 views
0

我做燈具的一些(不是全部)我的模型,並寫在哪些對象等車型的測試創建並保存查詢數據庫時返回。我正在使用內置於Rails的標準測試系統(rake test)。在我的一個測試中,我叫debuggerRails進行測試 - 沒有行測試期間

在調試程序,調用Login.all返回其是在測試創建了兩個登錄。但是,如果我連接到數據庫(PostgreSQL數據庫,我使用pgAdmin 3連接)並執行select * from logins,則不會返回任何行。

我知道這是正確的數據庫,因爲我的燈具都在那裏(例如,如果我跑select * from users,我所有的固定用戶的出現)。

我認爲,當我在測試期間一個ActiveRecord對象上調用#save,它實際上將其插入到數據庫中。這個假設是不正確的,還是有什麼我做錯了?

+0

當你連接時,你是在'test'環境還是在'development' /'production'環境中? – alestanis

+0

@alestanis - 絕對'測試'。 –

回答

0

原來每個測試都在一個事務中運行。當調試器被擊中時,事務還沒有被提交,因此數據庫中沒有任何顯示。該事務可以手動提交(但在測試完成後數據不能回滾,因此可能與其他測試衝突)。