0

私はrailscast#275に従って、忘れたパスワードをテストしています。メールを通過するのに問題があります。すでにエラーが発生しています。チュートリアルに従ってコーディングすると、「タイトルまたはテキスト「パスワード」のリンクがないためにエラーが発生しました。代わりに、「検証に失敗しました:電子メールはすでに取得されています(ActiveRecord: :RecordInvalid) "

検索しましたが、解決策が見つかりませんでした。

password_resets_spec.rbは次のとおりです。

require 'spec_helper'

describe "PasswordResets" do
  it "emails user when requesting password reset"
    user = FactoryGirl.create(:user)
    visit login_path
    click_link "password"
    fill_in "Email", :with => user.email
    click_button "Reset Password"
  end

factorys.rb:

FactoryGirl.define do
  factory :user do
    sequence :email do |n| "test#{n}@example.com"
    end
    password "secret"
  end
end
4

3 に答える 3

2

それが機能し始めたことにようやく気付いたとき、私がしたことは次のとおりです。データベースクリーナーをインストールしました。それから私はコマンドをしました:

rake db:reset rake db:migrate rake db:test:prepare

その後、「パスワードのリセットを要求するとユーザーにメールを送信する」の最後に「do」を追加する必要があることに気付きました。

これでエラーは発生せず、テストの冒険を続けることができます。助けてくれた人たちに感謝します。

于 2013-03-06T04:09:54.367 に答える
0

テストケースの実行中に、作成されたファクトリがレコードをロールバック/削除しなかったようです。

追加はbefore(:each)、例が実行される前に以前のレコードを削除します

before(:each) do
User.delete_all
end
于 2013-03-05T17:39:07.980 に答える
0

工場定義は問題ないようです。

仕様を実行する前に、テストデータベースが空であることを確認することから始めます。既存のユーザーレコード「test1@example.com」が残っている可能性があります。また、その例だけを実行しようとしましたか?違いはありますか?

于 2013-03-05T17:36:18.443 に答える