2012-05-06 8 views
1

私はテストを実行していました。最初のラウンドではすべて緑色になりました。私はもう一度テストを実行する場合、いくつかは、次のメッセージで失敗:FactoryGirlはテスト後にユーザーを削除しません

Failure/Error: @user = Factory :user 
    ActiveRecord::RecordInvalid: 
     Validation failed: Email has already been taken 

私はこれが起こっている理由として、本当に混乱しています。私はrspecがデータベースに値をプッシュしなかったと考えました。テストデータベースをパージすると、これは修正されますが、2回目のテスト実行では、同じエラーで失敗するものがあります。

どのように私はこれを修正できますか?注意してください、私は最近Cancanの宝石をインストールしました、多分それと何かをしなければなりませんか?

答えて

2

工場ガールは、データを削除する予定のものではありません。通常、RSpec(use_transactional_fixturesオプション)やdatabase_cleanerのような別のツールです。

テストデータベースが正しくクリーンアウトされていない場合は、database_cleanerを使用することをお勧めします。

+0

database_cleanerを試してみます。私はuse_transactional_fixtures = true thoを持っています。そのオプションでうまくいくはずですか? – Karan

0

私は事が正しくクリアされなかったいくつかのケースを持っていましたが、データベースを削除するためにrake db:test:prepareを実行すると、魅力的な働きをしました(データがあらかじめ入力されていないと仮定します)。プリエンプトされたデータが必要な場合は、フィクスチャまたは他の同様のソリューションを使用して元の状態にリセットしてください。

関連する問題