From 3d559033cb37337c2822cacc580b94f520971e76 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Mon, 6 Apr 2009 13:07:12 +0000 Subject: [PATCH] fix Mock class: child of object class and fix realClass usage --- test/lib/mock.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/lib/mock.py b/test/lib/mock.py index 0a38d41ee..2c87d53f8 100644 --- a/test/lib/mock.py +++ b/test/lib/mock.py @@ -11,6 +11,7 @@ # # # Copyright (c) 2005, Dave Kirby +# Copyright (c) 2009, Yann Leboulanger # # All rights reserved. # @@ -60,7 +61,7 @@ import re class MockInterfaceError(Exception): pass -class Mock: +class Mock(object): """ The Mock class emulates any other class for testing purposes. All method calls are stored for later examination. @@ -83,6 +84,7 @@ class Mock: self.mockAllCalledMethods = [] self.mockReturnValues = returnValues or {} self.mockExpectations = {} + self.realClass = realClass self.realClassMethods = None if realClass: self.realClassMethods = dict(inspect.getmembers(realClass, inspect.isroutine)) @@ -92,7 +94,7 @@ class Mock: self._setupSubclassMethodInterceptors() def _setupSubclassMethodInterceptors(self): - methods = inspect.getmembers(self.__class__,inspect.isroutine) + methods = inspect.getmembers(self.realClass,inspect.isroutine) baseMethods = dict(inspect.getmembers(Mock, inspect.ismethod)) for m in methods: name = m[0] @@ -119,7 +121,7 @@ class Mock: if self.realClassMethods is None: return if name not in self.realClassMethods: - raise MockInterfaceError("Calling mock method '%s' that was not found in the original class" % name) + return func = self.realClassMethods[name] try: @@ -268,7 +270,7 @@ class MockCallable: def makeCall(self, params, kwparams): if self.handcrafted: allPosParams = (self.mock,) + params - func = _findFunc(self.mock.__class__, self.name) + func = _findFunc(self.mock.realClass, self.name) if not func: raise NotImplementedError return func(*allPosParams, **kwparams) @@ -463,4 +465,4 @@ CALLABLE = callable -# vim: se ts=3: \ No newline at end of file +# vim: se ts=3: