2010-12-05 54 views
2

我正在構建一個Rails應用程序,該應用程序將一些模型和MongoDB用於其他模型(通過mongo_mapper gem)使用MySQL。用於MySQL和MongoDB的Database_Cleaner的黃瓜

我們已經開始爲應用程序構建黃瓜(帶有水豚和webdriver)測試,並且遇到了一些不存在的引用ID的問題。我相信我已經在MongoDB中跟蹤了這些舊數據。

在這一點上,database_cleaner正在使用MySQL記錄,但不是MongoDB的記錄。

關於使用MongoDB有一個discussion at the cucumber-rails project,但我相信它假設你只使用MongoDB,而不是MongoDB和MySQL一起使用。

有沒有辦法讓database_cleaner同時清理MySQL和MongoDB?或者它只是一個或另一個?

我發現瞭如何在運行測試之前,刪除所有的MongoDB內容this article,但我相信這將刪除所有數據,包括我使用當地發展記錄...

感謝。

回答

1

假設你正在做這樣的事情,當你告訴Rails蒙戈DB談談其中:

MongoDatabase = "mongodb://localhost/yourdb_#{Rails.env}" 

然後在你的測試,這樣做:

/spec/spec_helper.rb

MongoMapper.database.collections.select { |c| c.name != 'system.indexes' }.each(&:drop) 

(上面是針對MongoMapper的,但是對於Mongoid來說,想法是相同的 - 只需要刪除數據庫級別並刪除所有集合)。

這隻會刪除您的測試數據庫中的數據,而不是您的開發數據庫。與DB清潔器一起使用,你很好。