glasser / pymox

Automatically exported from code.google.com/p/pymox
Apache License 2.0
7 stars 11 forks source link

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

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
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?

Original issue reported on code.google.com by ruben.la...@gmail.com on 12 Oct 2014 at 6:09