質問

私はRailsチュートリアルブックからRaisを学んでいます: http://ruby.railstutorial.org/chapters/sign-in-sign-out#fnref:9.14

私は演習に取り組んでいます。割り当ては、統合テストで使用できるように、仕様ヘルパーにサインインメソッドを作成することです。彼はすでにコードを与えました:

def integration_sign_in(user)
    visit signin_path
    fill_in :email,    :with => user.email
    fill_in :password, :with => user.password
    click_button
  end

したがって、layout_links_spec.rb統合テストでは、使用する予定です。

before(:each) do
      @user = Factory(:user)
      visit signin_path
      fill_in :email,    :with => @user.email
      fill_in :password, :with => @user.password
      click_button
      # integration_sign_in(Factory(:user))
    end

私はすべてをコメントして使用します integration_sign_in(Factory(:user)). 。私が得るエラーはです

ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken

ただし、Integration_Sign_in関数に非常に似ているオリジナルを使用すると、テストは合格します。誰かが説明を提供してもらえますか?

ありがとう。

役に立ちましたか?

解決

あなたのように聞こえます:ユーザー工場は、ユーザーを作成するたびに同じメールアドレスを返しています。以前(:それぞれ)があるので、それはDBを複数のユーザーに作成して詰め込む予定であり、それらはすべて同じ電子メールを持っています。

工場を投稿すると、シーケンスを使用するか、代替ソリューションを見つけるために微調整することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top