Mocking class methods with OCMock not working

627 Views Asked by At

What's wrong with this code? Trying to make a class method return @NO, but it's returning @YES (the NSLog prints "1").

// Make the test think you don't have any internet
id mockFunctions = [OCMockObject mockForClass:[Functions class]];
[[[mockFunctions stub] andReturnValue:@NO] connectionAvailable];


NSLog(@"derp: %hhd", [Functions connectionAvailable]);
2

There are 2 best solutions below

0
On BEST ANSWER

I had two copies of the class that was being mocked. By not including the .m file in the test target, everything worked fine.

1
On

The construction for andReturnValue is a little more complex than what you are doing.

[[[mockFunctions stub] andReturnValue:OCMOCK_VALUE((BOOL){NO})] connectionAvailable];

Give that a try and see if it works.