신생아입니다. OCMock입니다.OCMock은 테스트중인 코드에서 조롱 된 인스턴스를 자동으로 사용합니까?
내가 사용 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]
을 호출하면 조롱 된 인스턴스가 발생합니까? 누군가 나에게 이걸 설명 할 수 있을까?
비록 @ 술탄의 대답을 받아 들였지만 답안의 정보 또한 나에게 매우 중요합니다! 감사! –