Один из подходов заключается в том, чтобы обернуть метод класса в метод своего собственного класса.Допустим, ваш класс должен позвонить [SomeOtherClass classMethod:someString]
.Вы можете создать метод invokeClassMethod:
в своем классе следующим образом:
-(NSString *)invokeClassMethod:(NSString *)someString {
return [SomeOtherClass classMethod:someString];
}
Затем в своем тесте вы создадите частичный макет и ожидаете invokeClassMethod:
-(void)testSomething {
id partialMock = [OCMockObject partialMockForObject:actual];
[[[partialMock expect] andReturn:@"foo"] invokeClassMethod:@"bar"];
[actual doSomething:@"bar"];
[partialMock verify];
}
Если вы хотитечтобы убедиться, что invokeClassMethod
не вызван , вы можете сгенерировать исключение:
-(void)testSomethingElse {
id partialMock = [OCMockObject partialMockForObject:actual];
[[[partialMock stub] andThrow:[NSException exceptionWithName:@"foo" reason:@"Should not have called invokeClassMethod:" userInfo:nil] invokeClassMethod:OCMOCK_ANY];
[actual doSomething:@"bar"];
}
Исключение приведет к сбою теста при вызове invokeClassMethod
.