2011-08-13 30 views
0

我最近升級的應用程序,我正在上軌3.1rc5 ..測試套件的問題在軌3.1rc5

在大多數情況下它一直很好,但我的幾個測試有很奇怪的問題..

舉例來說,在我的黃瓜規格之一,我創建了一堆假記錄使用工廠女孩..通常能正常工作,但它似乎是它不是出於某種原因產生的記錄..

所以我評論出我所有的工廠的東西,並用此代替它:

c = Contact.new(:first_name => "SOMEONE", :last_name => "COOL", :dob => 10.years.ago, :sex => "male") 
if c.save 
    puts "MYCOUNT: #{Contact.count}" 
else 
    puts "EXPLOSIONS!!!" 
end 

運行此作爲黃瓜輸出套件的一部分,這一點:

MYCOUNT: 0 

因此,聯繫人記錄顯然是被保存(並通過驗證),但它仍然沒有顯示出來,當我打電話計數?

爲什麼?

我使用:

Rails的3.1rc5

RSpec的護欄

黃瓜軌

factory_girl_rails

我也可能注意到我」 m使用太陽黑子索引我的模型(solr API)https://github.com/outoftime/sunspot

+0

保存後可以運行'c.reload'嗎?它出現在'Contact.all'中嗎? –

+0

對不起,等待很長時間..是在度假:-) 最奇怪的事情..後運行c.reload仍然沒有,它也不顯示在Contact.all ..我也檢查了c.new_record?這是錯誤的.. 這只是奇怪! –

回答

1

這聽起來像你已經有了一個事務回滾您的測試中燒:

1)交易打開

2)Contact.save成功(現在有合法的聯繫實例和數據庫記錄)

3)不順心的事,引發的ActiveRecord ::回滾

4)交易回滾,留下合法的聯繫情況,但沒有數據庫記錄,計數= 0

我不知道什麼會導致這與您的Rails升級有關,但也許這將幫助您找到失敗的原因。

編輯:

如果尾巴,你應該看到一個回滾日誌/ test.log中文件時會發生,如果是這種情況。您可以查看以前的數據庫活動,以瞭解最後一次成功的數據庫操作的線索。

不是一個確切的科學,但可以幫助您決定是否是這種情況,並得出它橫向偏離的原因。

+0

謝謝你!有什麼辦法找出ActiveRecord :: Rollback何時被引發? –

+0

編輯添加一些關於調試的更多細節。祝你好運!我在一週前遇到過這樣的錯誤,起初我完全困惑。 – Winfield

+1

是的..正確的錢,尾巴,我得到一個回滾。現在來了棘手的一點,找出它來自哪裏! :P通過它的外觀,回滾之前的最後一件事是'SELECT COUNT(*)FROM'contacts' WHERE'contacts'.'approved' = 1'(approved = 1是默認範圍)..之前的那個是:'RELEASE SAVEPOINT active_record_1' ...除了INSERT之外,回滾之前的唯一另外一件事是'[paperclip]保存附件.',我認爲這可能是小竅門..所以我評論了我的回形針的東西,仍然沒有骰子!哎呀! –