erikdoe / ocmock

Mock objects for Objective-C
http://ocmock.org
Apache License 2.0
2.16k stars 606 forks source link

Add the ability to ignore selectors on mocks to handle methods with variadic arguments. #539

Open smorr opened 5 months ago

smorr commented 5 months ago

OC Mock does not handle mocked classes that have methods with variadic arguments.
Eg -(void)log:(NSString*)format, ....;

When theses methods are called on mocked objects, the variadic arguments are not included in the NSInvocation that is created in the message forwarding. As a result the process will likely crash.

I needed a mechanism to tell OCMock to ignore specific selectors when setting up A mock. To do this I added a registry of selectors and classes that should not use the mock forwarding process.

The methods that determine whether a selector is handled, forwarded, and the target of the selector consults the registry and will pass the selector to the real Object when it is to be ignored.

Example Usage:

OCMIgnore([MYClass class],@selector(methodWithVariadicArgs:));