2011-01-21 32 views
0

我有一個小的Rails應用程序3(你有照片的列表,以及價格),並正嘗試進入黃瓜BDD測試。在Rails 3(使用Cucumber)中處理Prod,Dev,Test DB的數據的好方法是什麼?

我有2種類型的數據庫中的數據:

1) 有一個需要在我的督促,開發和測試服務器相同一致的數據(如價格範圍的表)。

2) 然後還有其他數據可以從每個環境(如用戶名,列表數據等)改變。我只需要確保我的開發和測試服務器中的數據具有良好的分佈,以匹配應該/將會產生的數據。

我有2個問題。

第一: 什麼是處理這種數據的最佳方式是什麼?我如何以無痛的方式確保跨不同環境的一致性?

二: 我使用夾具來填充我dev的分貝。我很難填充我的測試DB。填充測試數據庫的最佳方式是什麼(在使用Cucumber時),這樣我就可以運行我的場景了?

回答

2

https://github.com/rails/rails/commit/4932f7b38f72104819022abca0c952ba6f9888cb

背後DB/seeds.rb的想法是該數據的種類是非常靜態的,需要得到普及。該文件中的任何內容將在db:setup期間被拉入,並且可以使用rake db手動添加:種子

第二個問題應該是直截了當的,rake db:fixtures:load不應該依賴於環境。所以你應該能夠做一些像RAILS_ENV=test rake db:fixtures:load這樣的事情,並且應該用你的夾具數據加載你的測試數據庫。

3

如上所述,db/seeds可以用於某些用例,您也可以結算這個解決方案:http://jedschneider.posterous.com/using-semi-static-data-as-an-activerecord-mod,這可能會解決其他用例。

關於黃瓜,真正的黃瓜理念是通過網絡界面創建資源,例如創建一個用戶:去用戶登錄,註冊,以該用戶的身份登錄。他們discourage direct model access(第292頁,ish),但在我看來,只要Web界面工作流程也經過測試,這樣做太方便了。

對於這一點,我更喜歡,因爲它們在持續的發展不那麼脆弱使用工廠在燈具。我會建議爲Rails 3 factory_girlfactory_girl_rails因此,你可以有一個步驟定義:

/Given a valid user exists?/ do 
    @user = Factory(:user) 
end 

其中填充用戶表與用戶的創建,您可以使用通過與方案遵循一個實例變量。如果你想使用黃瓜裝置,請設置一個before hook,它將爲你裝載你的裝置。

+0

1,因爲教育 – 2011-01-24 19:09:49