1

私はテストを実行していましたが、最初のラウンドでは、すべてが緑色に合格しました。テストを再度実行すると、次のメッセージで失敗するものがあります。

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

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

これを修正する方法はありますか?注意してください、私は最近カンカンジェムをインストールしました、多分それはそれで何かをしなければなりませんか?

4

2 に答える 2

2

Factory Girlは、データを削除することになっているものではなく、通常はRSpec(use_transactional_fixturesオプションによる)またはのような別のツールですdatabase_cleaner

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

于 2012-05-06T01:15:09.450 に答える
0

私は物事が適切にクリアされなかったいくつかのケースがありrake db:test:prepare、データベースをクリーンアップするために実行することは魅力のように機能しました(データが事前に入力されていないことを前提としています)。事前に入力されたデータが必要な場合は、フィクスチャまたは他の同様のソリューションを使用して、元の状態にリセットします。

于 2012-05-06T06:09:37.030 に答える