1 //---------------------------------------------------------------------------------------
3 // Copyright (c) 2010 by Mulle Kybernetik. See License file for details.
4 //---------------------------------------------------------------------------------------
6 #import <objc/runtime.h>
7 #import "OCPartialMockObject.h"
8 #import "OCMRealObjectForwarder.h"
11 @implementation OCMRealObjectForwarder
13 - (void)handleInvocation:(NSInvocation *)anInvocation
15 id invocationTarget = [anInvocation target];
16 SEL invocationSelector = [anInvocation selector];
17 SEL aliasedSelector = NSSelectorFromString([OCMRealMethodAliasPrefix stringByAppendingString:NSStringFromSelector(invocationSelector)]);
19 [anInvocation setSelector:aliasedSelector];
20 if([invocationTarget isProxy] && (class_getInstanceMethod([invocationTarget class], @selector(realObject))))
22 // the method has been invoked on the mock, we need to change the target to the real object
23 [anInvocation setTarget:[(OCPartialMockObject *)invocationTarget realObject]];
25 [anInvocation invoke];