2014-12-12 4 views
0

클래스 메서드를 모의하려고하는데 예상대로 작동하지 않는 것 같습니다. 이견있는 사람?OCMock - Mocking 클래스 메소드?

@implementation ApplicationVersionManager 

+ (NSString *)appVersion { 
    return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 
} 

@end 

테스트

- (void)testSomething { 
    OCMStub([ApplicationVersionManager appVersion]).andReturn(@"3.0"); 
    NSString *version = [ApplicationVersionManager appVersion]; 
    // version is nil. Why? 
} 

답변

1

OCMock은 기존 개체의 메소드를 스텁 수 있지만, 당신은 여전히 ​​스텁을 설정하는 모의 객체가 필요합니다. 다음은 작동해야합니다.

- (void)testSomething { 
    id mock = OCMClassMock([ApplicationVersionManager class]); 
    OCMStub([mock appVersion]).andReturn(@"3.0"); 
    NSString *version = [ApplicationVersionManager appVersion]; 
}