2

Mox 模拟库允许您对正在模拟的类进行特定或不可知论。

  1. mock = mox.CreateMock(Foo)或者
  2. mock = mox.CreateMockAnything()

Mox 文档建议尽可能使用第一种方法(基本上检查模拟的类型)。Python 作为一种动态语言与类型无关。这两种方法在我看来不一致。

那么,哪种模拟方法更符合 Python 风格?

4

1 回答 1

2

他们不一样。从文档中:

有些类不提供公共接口;例如,他们可能会使用__getattribute__动态创建他们的界面。对于这些类,您可以使用MockAnything. 它不强制执行任何接口,因此您内心渴望的任何调用都是有效的。它在相同的记录-重放-验证范式中工作。除非绝对必要,否则不要使用它!您可以使用Mox 实例MockAnything的 方法创建一个,如下所示:CreateMockAnything

相反,在使用创建模拟CreateMock(Foo)时,调用未知方法时会出现异常。

于 2011-11-16T12:33:27.820 回答