ruby-on-rails – Minitest和setup / teardown hooks

我在test_helper中有以下代码

require "minitest/spec"
require "minitest/autorun"
require "database_cleaner"

class ActiveSupport::TestCase
  DatabaseCleaner.strategy = :deletion

  include Minitest::Spec::DSL

  setup { DatabaseCleaner.start }
  teardown { DatabaseCleaner.clean }
end

如果我写这样的测试

class MyTest < ActiveSupport::TestCase
  test 'test' do
    #some code
  end
end

执行设置和拆卸

但如果我像这样写测试

class MyTest < ActiveSupport::TestCase
  describe 'some test'
    before do
       @user = FactoryBot.create(:user)
    end

    it 'first test' do
      # some code
    end

    it 'second test' do
      # some code
    end
  end
end

设置和拆卸不执行.为什么?我可以修理吗?

解决方法

尝试将以下内容添加到test_helper.rb:

class Minitest::Spec
  before :each do
    DatabaseCleaner.start
  end

  after :each do
    DatabaseCleaner.clean
  end
end

或者,如果你使用minitest-around gem:

class Minitest::Spec
  around do |tests|
    DatabaseCleaner.cleaning(&tests)
  end
end

这里重要的是使用Minitest :: Spec类而不是ActiveSupport :: TestCase.

有关详细信息,请参阅database cleaner docs.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...