Jo.*_*o.P 2 ruby-on-rails minitest teardown
我已经在互联网上浏览了很长时间,令人沮丧,但是teardown()对于 MiniTest中该方法的目的以及应该如何使用它,我仍然很困惑。
我的基本要点是每次测试后运行 1 次,然后 2 次撤消测试期间所做的事情,以便将来的测试在干净的环境中运行。
但是,我不清楚它需要撤消的事情的性质:是否需要清空数据库?重置类变量?等等。
我也不清楚该方法是否应该明确填写。我发现了很多例子,其中teardown()完全被排除在这个例子之外。
(我最好的猜测是有一个teardown自动运行并处理某些事情的超级方法。这可以解释为什么它经常被遗漏,也可以解释为什么在给定的teardown()方法中有些东西被重置而有些则没有.但我还是不知道哪些是,哪些不是。)
简而言之:
是否需要显式创建拆卸?在什么情况下需要覆盖它,在什么情况下不需要?
最简单的答案是您#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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4933 次 |
| 最近记录: |