Mox模拟库允许您对您正在嘲笑的类具体或不可知。
mock = mox.CreateMock(Foo)
或mock = mox.CreateMockAnything()
Mox文档建议尽可能使用第一种方式(基本上检查模拟的类型)。 Python作为动态语言是类型不可知的。这两种方法看起来与我不一致。
那么,哪种嘲弄方法更像是Pythonic?
答案 0 :(得分:2)
他们不一样。来自documentation:
某些类不提供公共接口;例如,他们可能 使用
__getattribute__
动态创建其界面。对于这些 类,您可以使用MockAnything
。它没有强制执行 界面,所以任何你心愿的呼唤都是有效的。它适用于 相同的记录 - 重放 - 验证范例。 除非你这样做,否则不要使用它 绝对必须!你可以创建一个MockAnything
Mox实例的CreateMockAnything
方法如下:
相反,使用CreateMock(Foo)
创建模拟时,在调用未知方法时会出现异常。