2

私は Michael Hartl のチュートリアルhttp://railstutorial.org/を読んでいますが、ほとんどの場合、Rails を使い始めるのに非常に役立ちました。この本はTDDに非常に焦点を当てています.TDDを学びたかったので素晴らしいですが、問題は私のテストの90%が「Email has already been taken」というエラーで失敗することです. 本で提案されているように、テストを実行すると、メール「user@example.com」を持つユーザーが作成されると思います。問題は、ユーザーを作成する必要がある 2 番目のテストを実行するときに、同じ「user@example.com」メール アドレスを使用していることです。factory girl を使用して一連の電子メール アドレスを作成する回避策があることは知っていますが、チュートリアルの例を適切に機能させるためにこれを行う必要はありません。

他の誰かがこの問題に遭遇しましたか? この特定のトピックに関する質問がないことから判断すると、これは私のコードのバグだと思いますが、他の誰かがこれに遭遇した可能性があります。

4

5 に答える 5

2

どっ!問題はコメント行でした:

config.use_transactional_fixtures = true

spec_helper.rb で!

新人の間違い。

于 2011-02-01T13:05:45.547 に答える
1

テスト用にデータベースをクリーンアップするための便利なアセット:

https://github.com/bmabey/database_cleaner

于 2011-01-24T17:42:17.037 に答える
0

各テスト後にデータベースをクリーンアップする方法についてトピックを検索する必要があります。デフォルトのユーザーがフィクスチャからロードし、テストで hin を再度作成したときにも問題が発生する可能性がありますが、90% と言うと最初のケースのようです。rspec、test::unit、またはキュウリを使用すると違いが生じるため、リンクは添付しません。それぞれに特典があります。

ハッピーコーディング!

于 2011-01-24T13:30:50.367 に答える
0

CH 11 の終わり近くで同様の動作を見ました。私の spec_helper.rb は正しかったです。これは私のためにそれを修正しました:

「Rails s」を再起動 自動テストを
再起動
rake db:reset
rake db:migrate
rake db:test:prepare
rake db:populate

HTH、ペリー

于 2011-03-15T18:50:52.133 に答える
0

私も最近この問題を抱えていました。テスト DB はテスト後にクリーンアップする必要がありますが、何らかの理由でクリーンアップされませんでした。私がしたことは、'rake db:reset' を実行してすべてをリセットし、ファクトリー (Factory Girl) を使用していることを確認することだけでした。実際にデータベースにアクセスしていないことを確認できるように、フィクスチャまたはファクトリのいずれかを使用してみてください。

于 2011-01-24T14:57:09.967 に答える