2012-05-19 25 views
0

不幸的是,我沒有具體的問題(或線索),但希望有人能指出我在正確的方向。RSpec錯誤集體運行時,但不是單獨的

當我運行我所有的測試(rspec規格)時,我得到了兩個與延遲作業特別相關的失敗測試。

當我隔離運行這個spec文件(rspec ./spec/controllers/xxx_controller_spec.rb)時,所有的測試都通過了......這是一個常見的問題嗎?我應該尋找什麼?

謝謝!

回答

2

你已經提到它:隔離可能是解決方案。通常我會猜想,你的數據庫中有些東西正在被更改並且沒有被正確地清理(或者說,不是沒有被正確模擬)。

在這種情況下,儘管我會建議,因爲系統的工作量相當大,所以延遲工作的速度不夠快。所面臨的挑戰是所有應該測試的異步任務:您不能讓系統運行延遲的工作,但可以嘲笑電話並確保已收到延遲的工作。

很遺憾,沒有任何例子,我很難指出失蹤的嘲笑。但要確保所有對delay_jobs和類似的調用都能收到正確的數據,但實際上不會創建和運行這些作業 - 您的規格也會更快。確保你隔離被測試的函數,而不是調用外部依賴。

+0

感謝提示遊牧人!這正是我在尋找的東西,我意識到沒有發佈任何具體的例子,我不能指望任何具體的答案,但我覺得最好是要求發佈一般技巧而不是發佈10,000行代碼,並希望人們通讀it :) Cheers! – Brandon

+0

有一點需要知道的是,rspec被設計爲每次都按隨機順序運行測試,這個設計決策的目的是通過創建新的組合來幫助您識別未正確隔離的測試每次運行當你看到一個與訂單相關的故障時,你可以使用--seed選項複製測試訂單,並複製粘貼在運行結束時報告的種子。測試運行結束後顯示如「隨機化與種子12345「。 –

相關問題