【问题标题】:Rails capybara test failing due to database_cleaner malfunction由于 database_cleaner 故障,Rails capybara 测试失败
【发布时间】:2016-10-18 22:27:38
【问题描述】:

我已经安装了database_cleaner 并在我的所有测试中正常运行,除非它遇到这个......

scenario "is coach, signs up, email not in const, requests admin status" do
  user_sign_in(user1)
  visit my_profile_users_path
  click_button "Request Admin Status"

  expect(ActionMailer::Base.deliveries.count).to eq(1)
end

Rails 返回 失败/错误:expect(ActionMailer::Base.deliveries.count).to eq(1) 预期:1 得到:137 (使用 == 比较)

不知道为什么数据库清理器在这个实例上失败或如何修复它。任何帮助,将不胜感激。

Gemfile.rb

group :test do
  gem 'coveralls', require: false
  gem 'database_cleaner'
  gem 'launchy', require: false
end

spec/support/database_cleaner.rb

# frozen_string_literal: true

RSpec.configure do |config|

  config.before(:each) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each, js: true) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end

  config.after(:each) do
  end
end

rails_helper.rb

require 'spec_helper'
require 'rspec/rails'
require_relative "../spec/support/database_cleaner"

spec_helper.rb

require 'database_cleaner'

【问题讨论】:

  • 1) 你如何确定database_cleaner 有问题? 2) 您是否尝试过在本规范开始时清除所有交付,以确保没有发生什么奇怪的事情?

标签: ruby-on-rails ruby actionmailer database-cleaner


【解决方案1】:

我相信我通过更改测试解决了这个问题。

scenario "is coach, signs up, email not in const, requests admin status" do
  user_sign_in(user1)
  visit my_profile_users_path
  click_button "Request Admin Status"

  expect(ActionMailer::Base.deliveries.last.subject).to have_content("#{user1.username} requested admin")
end

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多