- Code: Select all
myMock = [OCMockObject mockForClass:[NSString class]];
[[myMock expect] isEqualToString:@"myString"];
[myMock isEqualToString:@"myString"];
This works fine and proves the simple things works, now let's move on the NSObject:
- Code: Select all
myMock = [OCMockObject mockForClass:[NSObject class]];
[[myMock expect] copy];
[myMock copy];
Again, works fine, and fails when I remove expect. But take a look at this:
- Code: Select all
myMock = [OCMockObject mockForClass:[NSObject class]];
[[myMock expect] className];
[myMock className];
This gives me a warning during compilation:
Instance method '-className' not found (return type defaults to 'id')
and results in the crash:
error: testSomething (myTests) failed: *** -[NSProxy doesNotRecognizeSelector:className] called!
Any ideas why? The methods copy and className are both defined on NSObject (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html)
But let's go deeper:
- Code: Select all
myMock = [OCMockObject mockForProtocol:@protocol(NSObject)];
[[myMock expect] zone];
[myMock zone];
works good, but hey, let's remove expect and see if it fails:
- Code: Select all
myMock = [OCMockObject mockForProtocol:@protocol(NSObject)];
//[[myMock expect] zone];
[myMock zone];
Still passes the test!
A bit deeper:
- Code: Select all
myMock = [OCMockObject mockForProtocol:@protocol(NSObject)];
[[[myMock expect] andReturn:[NSNumber numberWithBool:YES]] respondsToSelector:@selector(myMethod)];
[myMock respondsToSelector:@selector(myMethod)];
[myMock verify];
Fails the test: error: testSomething (myTests) failed: OCMockObject[NSObject]: expected method was not invoked: respondsToSelector:@selector(myMethod)
What am I doing wrong?
