Minitest 和 setup/teardown 钩子
Minitest and 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
class 而不是 ActiveSupport::TestCase
.
有关详细信息,请参阅 database cleaner docs。
我在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
class 而不是 ActiveSupport::TestCase
.
有关详细信息,请参阅 database cleaner docs。