我是OCMock的全新產品。OCMock自動在被測代碼中使用mocked實例嗎?
我使用dispatch_once()
創建一個單獨的類MyManager
:
@implementation MyManager
+ (id)sharedInstance {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
我有School
類的方法,其使用上述單:
@implementation School
...
- (void) createLecture {
MyManager *mgr = [MyManager sharedInstance];
[mgr checkLectures];
...
}
@end
現在,我要進行單元測試該方法,我使用MyManager的部分模擬:
- (void) testCreateLecture {
// create a partially mocked instance of MyManager
id partialMockMgr = [OCMockObject partialMockForObject:[MyManager sharedInstance]];
// run method to test
[schoolToTest createLecture];
...
}
我注意到用OCMock創建了我的單例MyManager
實例的部分模擬,當運行我的測試方法時,自動使用使用部分模擬實例。
這是有點怪我,因爲在我上面的測試案例,我只創建了MyManager
實例的部分模擬沒有它注入到MyManager
類,
如何OCMock自動強制下測試使用此代碼在被測代碼中調用[MyManager sharedInstance]
時嘲笑實例嗎?有人可以向我解釋這一點嗎?
即使我接受了@Sulthan的回答,您的答案中的信息對我來說也是非常重要的!謝謝! –