Не удается получить NSErrors от юнит-тестов - PullRequest
0 голосов
/ 20 июля 2010

Я настраиваю модульные тесты для запуска методов, которые должны генерировать 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, неправильно его тестирую или и то, и другое?

Спасибо!

1 Ответ

0 голосов
/ 20 июля 2010

Вы неправильно создаете ошибку. В вашем методе выборки вы проверяете на if (*error = nil). Это задание. То, что вы действительно хотите сказать, это: if (*error == nil), который использует оператор равенства.

Измените это, и вы получите положительный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...