Произвольный набор тегов - таким образом, я могу отметить тест как, например, "интеграция, UI, администратор".
(Вы знали, что я собирался попросить это, не сделал Вас:-)
Способ выполнения ожидаемых действий показан в листинге 3-5 этого документа. В вашем примере кода:
+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {
BOOL hasLength = ([theString length] > 0);
if (hasLength) return theString;
else {
if (error != NULL) *error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
return nil;
}
}
Согласно соглашению Какао, возвращаемое значение должно указывать на успех или неудачу (в этом случае вы возвращаете nil в случае неудачи), а ошибка заполняется дополнительной информацией, но только когда вызывающий запрос это.
Другими словами,
NSError *error = nil;
NSString *result = [self checkForLength: aString error: &error];
и
NSString *result = [self checkForLength: aString error: NULL];
являются допустимыми способами вызова метода. Таким образом, тело метода всегда должно проверять параметр ошибки NULL:
if (error != NULL)
*error = ...;