スタブ化する複雑なオブジェクトがいくつかあります (使用する宝石のインスタンス)。これらのスタブを一元化して、すべてのテストで使用できるようにするにはどうすればよいですか?
rake:test を使用せずにテスト間で DB をプログラムでクリアするにはどうすればよいですか? textmate を使用して個々のテストをすばやく実行したいのですが、テスト間で DB がクリアされないため、エラーが発生します。
Rails インスタンスをスピンアップする必要があるため、テストの実行が遅くなります。テストをスピードアップするには?特にテストを書いていて、変更をすばやく実行したい場合
1 に答える
2
1) それらを test_helper.rb に入れてすべてのテストで利用できるようにするか、これらのメソッドを含む独自のモジュールを作成してから、それらのスタブを必要とするテストにそのモジュールを含めることができます。
2)関心のなくなったモデルを削除するために、テスト セットアップ メソッドにModel.destroy_all
(または、適切であればどちらがより迅速に) 入れることができます。.delete_all
ただし、トランザクションでテストを実行している場合 (およびデータベースがトランザクションをサポートしている場合) は、データの作成とテストがトランザクションで実行され、ロールバックされてデータがクリアされるため、データをクリアする必要はありません。自動的。
3)これについてはよくわかりません。Windows での開発ではこの問題が多く発生しましたが、* nix ではそれほど多くはありませんでした。ある種の継続的なテストを検討することもできますが、フィードバックにはまだ遅れが生じるでしょう. Rails 環境の起動が非常に遅い原因を調査することは価値があるかもしれません。テスト環境ではスキップできる可能性があります。
于 2010-08-12T08:59:15.633 に答える