1

このテストを追加して一連のテスト全体を実行すると、別の 1 つのテストが失敗します。毎回違いますが、エラーは常に同じです。

私はRailsをDeviseとParanoiaで使用しています(これは、ソフト削除のためにテストしているものです)。

これはエラーです:

SQLite3::ConstraintException: UNIQUE constraint failed: users.email: INSERT INTO "users" ("last_sign_in_at", "current_sign_in_at", "last_sign_in_ip", "current_sign_in_ip", "sign_in_count") VALUES (?, ?, ?, ?, ?)

これは、他のテストを失敗させるテストです。

require "rails_helper"

feature "User soft deletes project" do
  scenario "successfully" do
    user = create(:user)
    login_as(user, scope: :user)
    project = create(:project, creator: user)
    visit edit_user_project_path(user, project)

    expect {
      click_on "Delete Project"
    }.to change(Project, :count).by(-1)

    expect(page).to have_content("Project was successfully destroyed")
    expect(Project.unscoped.count).to eq(1)
  end
end
4

1 に答える 1

2

各テストスイートの間にデータベースをクリアしていないようです。たとえば、最初のテスト スイート用のユーザーを作成するとします。次のテスト スイートで、一意であるはずの同じメールでユーザーを再度作成すると、そのエラーが発生します。database_cleanerに宝石を追加しGemfile、実行bundle installしてこれを追加しますspec_helper.rb

config.before(:suite) do
  DatabaseCleaner.strategy = :transaction
  DatabaseCleaner.clean_with(:truncation)
end
于 2015-06-29T22:54:55.793 に答える