2012-08-28 95 views
1

我正在爲使用Watir和RSpec的Rails應用程序編寫集成測試。跨越每個測試的數據庫中設置數據的最佳方式是什麼?例如,我有一個我想用於一組測試的用戶。我如何在所有測試運行之前播種這些常用數據(例如用戶),然後爲下一套測試進行清理?如何爲Rails應用程序的Watir集成測試種子測試數據?

回答

1

通常有一些測試的全局數據是一個壞主意,並可能在測試中引入依賴關係(這總是一個壞主意)。爲了避免這種情況,每個測試都應該生成它自己需要的數據,而不是依賴一些全局插入的數據。

如果您使用的是RSpec,那麼它會爲您執行一些工作(它甚至會以隨機順序運行測試以避免依賴關係) - 它會在運行測試之前創建數據庫保存點並回滾所有更改考試。理想情況下,這意味着測試數據庫在測試運行之前爲空,在測試運行後它將爲空。

在Rails中,您可以使用Rails own fixtures來播種所需的數據或使用一些第三方gem,如FactoryGirl

再一次,不要創建任何全局數據,這些數據將被所有測試使用,因爲遲早會回來困擾您。

+0

同意。不幸的是,我遇到了在每個規範測試中設置數據的問題。經過一些更多的搜索,這涉及到我遇到的問題:http://stackoverflow.com/questions/2600821/rspec-in-depth-differences-between-beforeall-and-beforeeach – Vince

+0

另外一個解釋,我原來的問題是這是我在每個規格測試中設置數據時遇到的問題的結果。當時唯一能找到的解決方法是組織我的測試組,並將我的設置放在最前面。 – Vince

1

我相信傑夫談到在使用Cucumber & Cheese書中的「使用數據庫」一章。

+0

感謝您的建議。不確定是否要購買本書,但無法預覽內容以確保它有助於解決我的問題。 – Vince