我想测试一个方法,但要模拟它调用的其他方法。我创建了这个简单的例子来说明这个概念:
class myClass():
def one_method(self):
print "hey"
def two_deep(self):
self.one_method()
def three_deep(self):
self.two_deep()
我使用了一个名为 Mox 的 python 模拟框架并编写了以下代码来执行此操作:
def test_partial(self):
self_mox = mox.Mox()
some_object = myClass()
## 1. make your mock
my_mock = mox.MockObject(some_object)
my_mock.one_method().AndReturn('some_value')
self_mox.ReplayAll()
ret = my_mock.three_deep() ## *** SEE NOTE BELOW called "comment":
self_mox.VerifyAll()
评论:
我想如果我在一个没有被覆盖的方法上调用这个模拟,那么模拟将默认为原始代码,然后我可以获得我想要的调用链,最后一个调用被替换......但是它不这样做。我不知道如何在没有插入方法的测试对象中嵌入模拟对象。
我研究了 Partial Mocks 和 Chained Mocks 来解决这个问题,但我找不到解决这个问题的方法。
谢谢你的帮助 :)
——彼得