我需要模拟一个对象,该对象的类应该定义了一些常量,例如:
class Driver
DRIVER_NAME = "google"
end
我不想在单元测试中简单地使用该类的实例,因为初始化很昂贵,而且它有一个简单的接口,所以它最适合模拟。如果我可以简单地继承Mocha::Mock
并添加一些完美的常量。我还没有找到实例化这些子类的方法。它们需要“mockery”作为初始化参数。我试过了:
TestDriver.new(self.mock.instance_method_get(:@mockery))
非常有趣的结果是:
意外调用:#< Mock:0x35c0690> .instance_method_get(:@ mockery)
摩卡的来源非常复杂和纠结。我甚至找不到为每个mock
对象创建Minitest::Test
的点。
那么如何在Mocha中对mocks进行子类化?有直接的方式吗?
我的备份解决方案是简单地使用上面显示的三行类driver.stubs(:name)...
而不是使用模拟,但这感觉就像是解决问题的错误方法。
答案 0 :(得分:0)
我(偶然)意识到我可以在任何物体上召唤expects
,而不仅仅是嘲笑......
class TestDriverManager
def test_something
foo = TestDriver.new
foo.expects(:valid?).returns(true).once
# ...
end
class TestDriver
DRIVER_NAME = "test"
...
end
end
因此,至少在我的情况下,没有必要继承mock。