mysql - FactoryGirl 和 RSpec 不回滚

标签 mysql ruby-on-rails rspec factory-bot

简单的预先生成的测试不起作用。它已变得更加简单,但测试后数据并未恢复。因此,它第一次运行时通过,然后随着计数的增加而失败。

我在 Mac 上运行,安装了带有 innoDB 引擎的 MariaDb。

rails_helper.rb

RSpec.configure do |config|
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.use_transactional_fixtures = true
  config.infer_spec_type_from_file_location!

  config.include Devise::TestHelpers, type: :controller
  config.include FactoryGirl::Syntax::Methods
end

工厂

FactoryGirl.define do
  factory :tag do
    icon
    word
  end
end

FactoryGirl.define do
  factory :word do
    word 'TestWord'
  end
end

FactoryGirl.define do
  factory :icon do
    icon_name "Cool Icon"
    icon_location "cache/1234"
    submission_date "2014-12-15 18:38:20"
  end
end

规范

require 'rails_helper'

RSpec.describe TagsController, type: :controller do

  # let(:tag) {  build(:tag) }
  let(:valid_session) { {} }

  describe "GET #index" do
    it "assigns all tags as @tags" do
      @tag = FactoryGirl.create(:tag)
      get :index, {}, valid_session
      expect(Tag.count).to eq([@tag].count)
    end
  end
 end

最佳答案

您应该使用DataBaseCleaner gem:

在您的 Gemfile 中包含此行:gem 'database_cleaner',然后运行 ​​bundle install

然后,将此行包含在 Spec.configure block 中:

config.before(:suite) do
  begin
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with :truncation
    DatabaseCleaner.start
    FactoryGirl.lint
  ensure
    DatabaseCleaner.clean
  end
end

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

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

希望这有帮助:)

关于mysql - FactoryGirl 和 RSpec 不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275478/

相关文章:

ruby-on-rails - Bundler 正在使用为不同的 gem 创建的 binstub。

ruby-on-rails - Nil 不是 Rspec 中的符号

ruby-on-rails - 使用 Rspec/Capybara/Selenium 与 Canvas 元素交互

java - 如何在 Spring Boot 1.4.1 中为 @DataJpaTest 添加 mode=mysql 到嵌入式 H2 DB?

Windows 7 x64 中 Rails 的 MySQL 驱动程序

带有 LEFT JOIN 的 MySQL 聚合函数

MySql:在两个表上使用内部联接进行更新挂起

ruby-on-rails - Rails 3 销毁链接不起作用

ruby-on-rails - Rails 控制台复杂查询

ruby-on-rails - Rails JSON API 在 JSON 中使用 PARAMS 测试 POST 请求