I am new in OCMock.
I use dispatch_once()
created a singleton class MyManager
:
@implementation MyManager
+ (id)sharedInstance {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
I have a method in School
class which uses the above singleton:
@implementation School
...
- (void) createLecture {
MyManager *mgr = [MyManager sharedInstance];
[mgr checkLectures];
...
}
@end
Now, I want to unit test this method, I use a partial mock of MyManager:
- (void) testCreateLecture {
// create a partially mocked instance of MyManager
id partialMockMgr = [OCMockObject partialMockForObject:[MyManager sharedInstance]];
// run method to test
[schoolToTest createLecture];
...
}
I noticed that with OCMock, after I created the partial mock of my singleton MyManager
instance, when run my method under test, it automatically use the partially mocked instance.
This is a bit weird to me, since in my test case above, I only created the partial mock of MyManager
instance without injecting it to MyManager
class,
how does OCMock automatically force the code under test use this mocked instance when [MyManager sharedInstance]
is called in the code under test ? Could someone explain to me this?
Aucun commentaire:
Enregistrer un commentaire