Reputation: 1
Stubbing Methods works nicely With 'NSUserDefaults',but it just doesn't seem to work with My Custom Method.
My test code is as follows:
- (void)testExample
{
id userDefaultMock = OCMClassMock([NSUserDefaults class]);
OCMStub([userDefaultMock standardUserDefaults]).andReturn(userDefaultMock);
OCMStub([userDefaultMock objectForKey:[OCMArg any]]).andReturn(@"user defaults mock obj");
id managerMock = OCMClassMock([ViewManager class]);
OCMStub([managerMock sharedInstance]).andReturn(managerMock);
OCMStub([managerMock generateObjWithObj:[OCMArg any]]).andReturn(@(11));
ViewController *vc = [[ViewController alloc]init];
[vc publicMethod];
}
code in ViewController:
- (void)publicMethod
{
[[NSUserDefaults standardUserDefaults]setObject:@"mockObj" forKey:@"mockObjKey"];
id obj = [[NSUserDefaults standardUserDefaults]objectForKey:@"mockObjKey"];
NSLog(@"mockObjKey:%@",obj);
NSNumber *num = @(0);
NSNumber *i = [[ViewManager sharedInstance] generateIndexWithNumber:num];
NSLog(@"i expected to be 1, actual :%ld",i.integerValue);
}
code in ViewManager:
static ViewManager *sharedViewManager = nil;
+ (id)sharedInstance
{
if (nil == sharedViewManager)
{
sharedViewManager = [[ViewManager alloc]init];
}
return sharedViewManager;
}
- (NSNumber *)generateIndexWithNumber:(NSNumber *)index
{
NSLog(@"generateIndexWithNumber:%ld",index.integerValue);
return @(index.integerValue + 1);
}
and console output is as follows:
2017-07-03 10:12:25.812 OC_Unit[2214:64454] mockObjKey:user defaults mock obj
2017-07-03 10:12:25.812 OC_Unit[2214:64454] generateIndexWithNumber:0
2017-07-03 10:12:25.812 OC_Unit[2214:64454] i expected to be 1, actual :1
The last line of output should be 'i expected to be 1, actual :11' if shubbing methods works. I'm wondering,why does it not output as expected。
Upvotes: 0
Views: 161
Reputation: 3014
It looks like you are stubbing generateObjWithObj:
but the code is calling generateIndexWithNumber:
.
Upvotes: 1