
Hi Sean. You're using the mock_method() function correctly... ======================================== class Foo: def greeting(self): return 'hi' f = Foo() print f.greeting() mocking.mock_method(Foo, 'greeting', mocking.return_value('bye')) print f.greeting() ======================================== atagar@morrigan:~/Desktop/stem$ python example.py hi bye ======================================== The trouble is that the Controller __dict__ is a dictproxy (a read-only dictionary). After some experimentation this seems to be a product of extending object... ========================================
class Foo: ... pass
type(Foo.__dict__) <type 'dict'>
class Bar(object): ... pass
type(Bar.__dict__) <type 'dictproxy'>
======================================== So... um, shame on us for doing the right thing. ;) We've probably never encountered this before because the mock_method() function is presently completely unused... atagar@morrigan:~/Desktop/stem$ grep -Rl "mock_method" * | grep -v '.pyc' test/mocking.py It was added in a500dbc to help test the BaseController, then its usage was removed in 4ff7efe. Strangely method mocking hasn't come up again since then. Unfortunately I don't have a good suggestion on how to work around this...