虽然它们是不同的对象(至少{{},但我遇到了一些事实,这些问题来自于某个给定类的所有mox Mock对象在==
,__eq__
意义上似乎相等。 {1}}返回mock1 is mock2
)。有没有办法阻止这种行为?
在下面的代码示例中,您可以看到计数错误,因为它认为所有模拟都是相同的:
False
答案 0 :(得分:0)
__eq__
和mox.MockAnything
的{{1}}的实现似乎只是比较mox.MockObject
和replay_mode
所以任何期望相同的模拟对象电话实际上是#34;相等"。
expected_calls_queue
当在集合中使用模拟class MockAnything:
def __eq__(self, rhs):
"""Provide custom logic to compare objects."""
return (isinstance(rhs, MockAnything) and
self._replay_mode == rhs._replay_mode and
self._expected_calls_queue == rhs._expected_calls_queue)
等方法时,这会产生一些影响。
您必须添加一些假方法的调用,以使list.remove()
眼中的模拟不相等。