【问题标题】:When I add rspec test, other tests start failing当我添加 rspec 测试时,其他测试开始失败
【发布时间】:2015-06-29 22:39:11
【问题描述】:

当我添加这个测试并运行整个测试套件时,另一个测试失败了。每次都不一样,但错误总是一样的。

我正在使用带有 Devise 和 Paranoia 的 Rails(这是我正在测试的,用于软删除)。

这是错误:

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

【问题讨论】:

    标签: ruby-on-rails rspec devise capybara acts-as-paranoid


    【解决方案1】:

    似乎您没有在每个测试套件之间清除数据库。例如,您为您的第一个测试套件创建一个用户。在您的下一个测试套件中,您再次使用相同的电子邮件创建一个用户,该电子邮件应该是唯一的,并且您会收到该错误。将 database_cleaner gem 添加到您的 Gemfile,运行 bundle install 并将其添加到 spec_helper.rb

    config.before(:suite) do
      DatabaseCleaner.strategy = :transaction
      DatabaseCleaner.clean_with(:truncation)
    end
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2016-01-31
      相关资源
      最近更新 更多