Модульное тестирование для NSError's - PullRequest
0 голосов
/ 17 июля 2010

Алло,

Я пытаюсь настроить некоторые модульные тесты для кода, который принимает * NSError в качестве аргумента. Если возникает проблема проверки, объект не сохраняется и устанавливается условие NSError.

Мой метод:

- (BOOL)validateConsistency:(NSError **)error {

    ... code omitted for brevity ...

    if (errorCondition == YES) {
        NSMutableDictionary *errorDetail = [NSMutableDictionary dictionary];
        [errorDetail setValue:@"Validation failed " forKey:NSLocalizedDescriptionKey];
        *error = [NSError errorWithDomain:@"myDomain" code:100 userInfo:errorDetail];
        return nil;
    }
    ...
}

Как только я создал условия, которые должны генерировать эту ошибку, как я могу STAssert / проверить ее в моих модульных тестах?

Спасибо.

1 Ответ

3 голосов
/ 18 июля 2010

Вы делаете это немного неправильно в двух местах:

  • Вы возвращаете ноль, когда вы хотите вернуть NO
  • Вы не проверяете error != nil перед назначениемк этому.Допустимо указывать nil в качестве указателя NSError, чтобы означать «Мне все равно».

После того, как вы исправите это, вы можете протестировать рабочий случай с помощью

STAssertTrue(validateConsistency:nil, ...)

При возникновении ошибки вы должны сделать это следующим образом:

NSError *error;
STAssertFalse(validateConsistency:&error, ...); // Make sure we failed
STAssertEqual([error code], 100, ...); // Make sure the code is right; we can assume the domain is right, or you could check it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...