2011-01-21 1 views
0

私は小さなRails 3アプリを持っています(あなたは写真と価格のリストを持っています)、そしてキュウリのBDDテストに挑戦しようとしています。私のProd、デベロッパー、およびテストサーバー間で同じにする必要がある価格帯の表のような一貫性のあるデータを()ありますProd、Dev、Rails 3(Cucumberを使用)でDBをテストすると、データを処理する良い方法はありますか?

1) :

は、私はデータベースのデータの2種類があります。

2) 次に、各環境(ユーザー名、リスティングデータなど)から変更できる他のデータがあります。私は、dev/testサーバにデータの良い広がりがあることを確認する必要があります。

私には2つの質問があります。

最初に: このようなデータを処理するにはどうすればよいですか?さまざまな環境で一貫性を確保するにはどうしたらよいでしょうか?

2番目: 私はデベロッパーデータベースを埋め込むために器具を使用しています。私はテストDBを投入するのに苦労しています。私は自分のシナリオを実行することができるようにテストDBを(人参を使用している)を埋めるための最良の方法は何ですか?

答えて

2

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

デシベル/ seeds.rbの背後にある考え方はかなり静的であり、普遍的にする必要があるデータのようなものです。そのファイルの中にあるものはdb:setup中に取り込まれ、rake db:seedで手作業で追加することができます。

2番目の疑問はまっすぐでなければなりません。備考:負荷は環境に依存してはいけません。だから、RAILS_ENV=test rake db:fixtures:loadのようなことをすることができるはずですし、それはあなたのテストデータベースをあなたのフィクスチャーデータでロードするべきです。

3

としてお勧めしますが、いくつかの使用例ではdb/seedsを使用できますが、この解決策をチェックアウトすることもできます。http://jedschneider.posterous.com/using-semi-static-data-as-an-activerecord-mod

キュウリに関しては、真のキュウリの哲学は、ユーザーを作成するなど、Webインターフェイスを通じてリソースを作成することです。ユーザーにサインインして登録し、そのユーザーとしてサインインします。彼らはdiscourage direct model access(292ページ)ですが、私の意見では、Webインターフェイスのワークフローもテストされていれば、やりすぎると便利です。

このため、私は、開発中の工場では壊れにくいため、工場を工場よりも使用する方が好きです。ユーザーANとユーザーテーブルを移入

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

あなたとシナリオを辿るのに使用できるインスタンス変数を作成します。私はこのようにあなたがステップ定義を持つことができるのRails 3のfactory_girlまたはfactory_girl_railsをお勧めします。あなたがキュウリと治具を使用したい場合は、before hookを設定してください。あなたのために治具がロードされます。

+0

+1教育のため –

関連する問題