OCMock转发到原始类方法

Ben*_*ynn 9 objective-c ocmock

OCMock为mock类方法提供了一个很好的语法,但类方法调用可以转发到真正的类对象吗?

self.connectionMock = [OCMockObject mockForClass:NSURLConnection.class];

[[[[self.connectionMock stub] andDo:^(NSInvocation *invocation) {
    NSURL *url = [invocation getArgumentAtIndexAsObject:2];
    NSLog(@"Passing through mock: %@", url);
} ] andForwardToRealObject] connectionWithRequest:OCMOCK_ANY delegate:OCMOCK_ANY];
Run Code Online (Sandbox Code Playgroud)

该问题andForwardToRealObject仅适用于部分问题.我可以自己调整方法,但是有一种简单的方法可以让我使用OCMock调用原始的类方法吗?

小智 0

子类 OCMock 并覆盖forwardingTargetForSelector:(SEL)selector:

+(id)forwardingTargetForSelector:(SEL)selector
{
    Class yourClass = [classObject class];
    return yourClass;
}
Run Code Online (Sandbox Code Playgroud)

(来源:“如何在 Objective-C 中转发类方法?”