Export to GitHub

pymox - issue #59

MockObject.__eq__ behaviour causes problems when the mocks are used in lists.


Posted on Oct 12, 2014 by Helpful Cat

MockObject and MockAnything are just equal to any other mock that happens to have the same "replay_mode" and "expected_calls_queue". That creates problem when the mocks are used in sequences / collections / lists. For example, list.count() will probably give the wrong result as it will count all mock instances.

Here is an example

import mox

mocker = mox.Mox() mock1 = mocker.CreateMockAnything(description="mock1 is unique") mock2 = mocker.CreateMockAnything(description="mock2 is also unique") print [mock1, mock2].count(mock1) #=> 2 but should be 1

Wouldn't be better if eq compared at least the attrs of the mocks? If they have a different set of mocked attributes they can't be "equal", right?

Status: New

Labels:
Type-Defect Priority-Medium