gpt4 book ai didi

ios - 类平等的单元测试测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:46 25 4
gpt4 key购买 nike

我正在向一个项目添加一些单元测试,并希望进行一个测试来检查从方法返回的数组是否不可变,因此我创建了以下单元测试:

- (void)testReturnedObjectIsOfTypeImmutableArray
{
XCTAssertEqualObjects([NSArray class],
[[NSArray reverseArray:self.array] class],
@"NSArray should be returned");
}

但是这失败了,因为返回的对象属于类“__NSArrayI”而不是“NSArray”。

我无法弄清楚如何调整上述内容以使“_NSArrayI”可接受,而接收“_NSArrayM”或“NSMutableArray”应该是 Not Acceptable 。

最佳答案

如答案中所建议 How to get classname in objective c Like 'NSString' ,您可以使用 classForCoder 而不是 class。示例:

NSArray *a = @[@"foo"];
NSMutableArray *b = [a mutableCopy];

NSLog(@"a class: %@", [a class]); // -> __NSArrayI
NSLog(@"b class: %@", [b class]); // -> __NSArrayM
NSLog(@"a classForCoder: %@", [a classForCoder]); // -> NSArray
NSLog(@"b classForCoder: %@", [b classForCoder]); // -> NSMutableArray

所以这个测试应该给出预期的结果:

- (void)testReturnedObjectIsOfTypeImmutableArray
{
XCTAssertEqualObjects([NSArray class],
[[NSArray reverseArray:self.array] classForCoder],
@"NSArray should be returned");
}

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

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