Я настраиваю модульные тесты для запуска методов, которые должны генерировать NSError. По какой-то причине я не могу попасть в NSError из модульных тестов. Я создал образец метода, чтобы проверить это, и он все еще не работает. Что я делаю не так?
Файл реализации:
- (BOOL)createAnError:(NSError **)error {
NSMutableDictionary *errorDetail = [NSMutableDictionary dictionary];
[errorDetail setValue:NSLocalizedString(@"This error should be testable", @"")
forKey:NSLocalizedDescriptionKey];
[errorDetail setObject:self
forKey:NSValidationObjectErrorKey];
NSError *cannotDeleteError = [NSError errorWithDomain:@"myErrorDomain"
code:12345
userInfo:errorDetail];
if (*error = nil)
*error = cannotDeleteError;
return NO;
}
Модульный тест:
- (void)testNSErrors {
Unit *myObj = [NSEntityDescription insertNewObjectForEntityForName:@"TestObject"
inManagedObjectContext:managedObjectContext];
NSError *error = nil;
STAssertFalse([myObj createAnError:&error], @"This method should return NO");
STAssertEquals([error code], 12345, @"The error code is incorrect. (error = %@)", error);
}
Ошибка, которую я вижу в результатах сборки: error: -[LogicTests testNSErrors] : '0' should be equal to '12345': The error code is incorrect. (error = (null))
.
Так почему это происходит? Я неправильно создаю NSError, неправильно его тестирую или и то, и другое?
Спасибо!