【发布时间】:2014-05-02 02:59:59
【问题描述】:
我正在使用 MiniTest 来测试一些代码。在其中一组测试中,我有一个模拟对象返回罐装数据,如下所示:
require 'minitest/autorun'
require_relative '../object_under_test'
class Foo
def method_returning_canned_data
return canned_data
end
end
class TestObjectUnderTestThatReliesOnFoo < Minitest::Test
def test_something
end
end
稍后,我有一组测试来测试实际的 Foo 对象。
require 'minitest/autorun'
require_relative '../foo'
class TestFoo < Minitest::Test
def test_actual_object_foo
end
end
问题在于,如果首先运行第一组测试,则在运行实际 Foo 对象的测试时,模拟 Foo 对象在对象层次结构中是第一个并且方法被发送给它,这显然会导致测试失败(除了没有测试正确的对象!)。
问题是,当我完成后如何从 Ruby 的层次结构中删除模拟 Foo 对象?或者......有没有更好的方法来返回罐头数据进行测试?
谢谢!
【问题讨论】: