使用 STAssertEquals 为 NSArray 检查 NSArray 项目计数的正确方法是什么。
预计以下工作:
...
STAssertEquals(1, [myArray count], @"One item should be in array");
此代码在运行测试时会产生“类型不匹配”运行时错误。
相反,我必须对 NSUInteger 进行显式转换:
STAssertEquals((NSUInteger)1, [myArray count], @"One item should be in array");
这行得通 - 但由于明确的演员表,看起来有点难看。
我还想避免使用 STAssertTrue,因为 STAssertEquals 看起来更合适(我们比较两个值)并显示实际值和预期值。
在 Objective-C 中检查它的正确方法是什么?
更新 1
感谢建议使用 1u 作为无符号整数文字的答案
STAssertEquals(1u, [myArray count], @"One item should be in array");
但是正如@Aaron 提到的那样,它仍然很难看——我想直接使用“1”——现在考虑使用 myArray.count == 1 。原因是1u看起来不是很干净。1对我来说就是1。你从来没有用数学写过 1u :-) 还有其他建议吗?
更新 2
正如@H2CO3 提到的 1u 甚至不能总是工作,并且正如一些线程中所建议的那样,我们可以对期望值使用更多的声明性定义,这将解决铸造问题:
NSUInteger expectedItemsCount = 1;
STAssertEquals(expectedItemsCount, [myArray count], @"One item should be in array");
我更喜欢它而不是 1u 解决方案,因为它看起来更干净。但是这种方法的缺点是我们有额外的行并且代码不是很紧凑。所以看起来我们必须在两种方法之间做出选择:(NSUInteger)1
和NSUInteger expectedItemsCount = 1;