2011-11-05 31 views
2

如果我使用一個硒web驅動程序來測試黃瓜/水豚,我是否需要在執行黃瓜之前在單獨的終端中打開rails服務器?運行黃瓜硒前需要運行Webrick嗎?

(目前我與服務器運行它打開,但我得到「數據庫被鎖定」從sqlite的錯誤,我相信這是黃瓜和使用WEBrick爭食)

回答

2

你並不需要一個活躍的Rails服務器來運行黃瓜測試,並有一個正在運行的服務器(Webrick,Mongrel等)不應該影響你的數據庫,除非你使用同一個數據庫進行測試和開發。測試套件啓動自己的rails副本,並應使用「AppName-Test」(默認情況下)數據庫進行測試。

數據庫被鎖定,這是發生在第一次測試上,還是後來在測試中?如果它稍後在測試中,那麼隨着您進入下一個測試,您可能會有更大的數據庫事務處理正在進行中。如果你認爲這是事實,那麼在第一次測試結束時拋出'睡眠30'來檢查......給DB一些時間來降溫。如果解決了這個問題,請在代碼中查找運行異常長數據庫事務的任何內容。

一個很好的寶石,以增加測試將是: https://github.com/bmabey/database_cleaner

應該有助於殺死任何DB測試互動。希望這能讓你走上正確的道路。

+0

你說得對,這似乎更好。它在第一次測試中發生;看起來交易不會完成,但它只是一些小插入,所以我不應該想象它會花費太長時間。還有什麼可能導致它卡住? – cjm2671

+1

重置你的測試數據庫'RAILS_ENV = test rake db:reset'我相信...(如果那不是那個,請用'rake -T'來查看任務,並指定一個執行重置的數據庫 - db:drop和db:setup可能必須運行)。如果重新開始測試數據庫不起作用,請在可視化測試中檢查插入內容:啓動rails服務器,執行您的測試在瀏覽器中執行的操作,然後觀察控制檯正在進行的操作。也許你可以在那裏看到懸掛的跡象。 – Jared

+0

固定 - 非常感謝! – cjm2671