From 35d2aaafce5afc718e96cc78656201488c390725 Mon Sep 17 00:00:00 2001 From: Gustavo Niemeyer Date: Thu, 22 Nov 2007 20:01:27 -0200 Subject: In recording mode, mock.__class__ will now return Mock, and not record the action. This allows Mocker to be used in interactive environments which inspect the result's type, such as in iPython (reported by Alex Dante). --- mocker.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mocker.py') diff --git a/mocker.py b/mocker.py index e06ae64..c18f204 100644 --- a/mocker.py +++ b/mocker.py @@ -965,9 +965,6 @@ class Mock(object): try: return self.__mocker__.act(path) except MatchError, exception: - if (self.__mocker_type__ is not None and - kind == "getattr" and args == ("__class__",)): - return self.__mocker_type__ root_mock = path.root_mock if (path.root_object is not None and root_mock.__mocker_passthrough__): @@ -986,6 +983,10 @@ class Mock(object): def __getattribute__(self, name): if name.startswith("__mocker_"): return super(Mock, self).__getattribute__(name) + if name == "__class__": + if self.__mocker__.is_recording() or self.__mocker_type__ is None: + return type(self) + return self.__mocker_type__ return self.__mocker_act__("getattr", (name,)) def __setattr__(self, name, value): -- cgit v1.2.1