喂,
我正在尝试为接受* 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 / test?
感谢。
答案 0 :(得分:3)
你在两个地方做的有点错误:
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.