Как проверить, вызван ли блок - PullRequest
2 голосов
/ 27 января 2012

У меня есть модульный тест для метода, который должен вызывать либо блок завершения, либо блок с ошибкой.Теперь я знаю для каждого случая, какой из них следует вызвать, поэтому я использую STFail в блоке, который не должен вызываться.

Как теперь я могу проверить, действительно ли вызывается блок, который должен быть вызван?*

Это мои настройки:

NSString *parameter = @"foo";
[controller doSomethingWithParameter:parameter withcompletionBlock: 
^(NSString *result)
{
    // This block should be invoked
    // Check if the result is correct
    STAssertEquals(result, kSomeOKConstant, @"Result shout be 'kSomeOKConstant'");
} failedBlock:
^(NSString *errorMessage) {
    STFail(@"No error should happen with parameter '%@'",parameter);
}];

1 Ответ

3 голосов
/ 27 января 2012

Вам нужно добавить блочные переменные и установить их внутри своих блоков:

BOOL __block successBlockInvoked = NO;
BOOL __block failureBlockInvoked = NO;
NSString *parameter = @"foo";
[controller doSomethingWithParameter:parameter withcompletionBlock: 
^(NSString *result) {
     successBlockInvoked = YES;
     STAssertEquals(result, kSomeOKConstant, @"Result shout be 'kSomeOKConstant'");
} failedBlock:
^(NSString *errorMessage) {
    failureBlockInvoked = YES;
    STFail(@"No error should happen with parameter '%@'",parameter);
}];

На этом этапе вы можете сделать утверждения о значениях successBlockInvoked и failureBlockInvoked: если ожидаемаяне установлен, ваш тест не пройден.

...