【发布时间】:2010-07-20 15:04:42
【问题描述】:
我正在设置单元测试来运行应该生成 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、错误地测试它,还是两者兼而有之?
谢谢!
【问题讨论】:
标签: objective-c unit-testing testing