Использование ожиданий блока с OCMock - PullRequest
4 голосов
/ 26 марта 2011

Я использую GHUnit & OCMock для тестирования в моем приложении для iOS.

Поэтому у меня возникли проблемы с их интеграцией.

Следующий код хорошо работает.

NSString *s = [NSString stringWithString:@"122"];
id mock = [OCMockObject partialMockForObject:s];
[[[mock stub] andReturn:@"255"] capitalizedString];
NSString *returnValue = [mock capitalizedString];
GHAssertEqualObjects(returnValue, @"255", @"Should be equal");
[mock verify];

Но когда я изменяю [[[mock stub] andReturn: @ "255"] capitalizedString];в

[[[mock stub] andDo:^(NSInvocation *invocation) {
    [invocation setReturnValue:@"255"];
}] capitalizedString];

Я получил ошибку, которая говорит: «Причина:« NSCFString »должно быть равно« 255 ». Должно быть равно»

Я думаю, что эти два утверждения должны делать абсолютно одинакововещь.Я не прав?

1 Ответ

7 голосов
/ 27 марта 2011

setReturnValue: ожидает указатель на возвращаемое значение, поэтому ваш блок должен быть:

void (^theBlock)(NSInvocation *) = ^(NSInvocation *invocation) {
    NSString *capitalizedString = @"255";
    [invocation setReturnValue:&capitalizedString];
};
...