gpt4 book ai didi

iphone - NSError 的单元测试

转载 作者:行者123 更新时间:2023-11-28 21:06:21 25 4
gpt4 key购买 nike

你好,

我正在尝试为接受 *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/测试?

谢谢。

最佳答案

你在两个地方做错了:

  • 当你想返回 NO 时,你返回了 nil
  • 在分配给它之前,您没有检查 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.

关于iphone - NSError 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com