最简单的答案是您#teardown
在每个测试中都使用它,但您不必担心它。与 Rails 生命周期类似,有一个 Minitest 生命周期。有一些钩子可以注入测试使用的逻辑和行为。Rails 测试中主要的一项是数据库事务。使用的每个测试都ActiveSupport::TestCase
在数据库事务中运行。流程是这样的:
- 创建数据库事务 (
Minitest::Test#setup
)
- 运行您的测试方法 (
MyTest#test_something
)
- 回滚数据库事务 (
Minitest::Test#teardown
)
人们用它#setup
来创建用于测试的对象是很常见的。测试方法完成后测试对象被垃圾回收,所以大多数人不使用#teardown
测试后清理。因为这#teardown
通常是您在编写测试时通常不使用的更高级的功能。我发现它更常用于增强 Minitest 的测试库中。
但有时我会#teardown
在测试中使用。这是我何时可以使用它的示例。
require "minitest/autorun"
class Foo
def initialize namer
@namer = namer
end
def name
@namer.name
end
end
class FooTest < Minitest::Test
def setup
@namer_mock = Minitest::Mock.new
@namer_mock.expect :name, "foo"
@foo = Foo.new @namer_mock
end
def test_name
assert_equal "foo", @foo.name
end
def teardown
@namer_mock.verify
end
end