I have a class that looks like<div><br></div><div>class Foo(object):</div><div> def iter(descending=False):</div><div> for r in something_iterable:</div><div> yield r</div><div><br></div><div><br></div>
<div>I would like to mock the class and patch Foo.iter. I have tried a number of things without luck. </div><div><br></div><div><div>class TestFoo(PatchedTestCase):</div><div> _partitions = []</div><div><br></div><div>
def partitions(self):</div><div> for p in self._partitions:</div><div> yield p</div><div><br></div><div> def postSetUpPreRun(self):</div><div> self._partitions = [ 1, 2, 3, 4 ]</div><div> rw = Mock(spec=Foo)</div>
<div> self.mock_RollingWindow = rw</div><div> rw.iter = Mock()</div><div> rw.iter.side_effect = self.partitions</div><div><br></div></div><div>This is following the pattern I've used for other methods, but doesn't work for an iterator... so, what is the proper approach please?</div>
<div><br></div><div>Andrew</div>