0

我正在尝试实现一个单元测试(XCTest)来比较两个 NSArray 对象:

这是我的实现:

- (void)testTwoNumsArrays {
    NSArray *result = @[@20,@20];
    NSArray *expecteResult = @[@20,@20];
    
    XCTAssertEqual(result, expecteResult);
}

我收到此错误:

((result) equal to (expecteResult)) failed: ("{length = 8, bytes = 0xb0cfc00001000000}") is not equal to ("{length = 8, bytes = 0x9032ce0001000000}")

你们中的任何人都知道为什么我不能比较这两个数组。在 Swift 中它工作得很好。

我会非常感谢你的帮助。

4

1 回答 1

-1

问题是您正在比较指向对象的指针而不是对象本身。

XCTAssertEqual 本质上是进行如下检查,仅比较指针值。

if (a != b) assert();

你想要更多的东西

if (![a isEqual:b]) assert();

这可以通过调用 XCTAssertEqualObjects 来实现。

更多信息:

XCTAssertEqual 无法比较两个字符串值?

https://developer.apple.com/documentation/xctest/xctassertequalobjects

于 2020-07-21T19:36:10.727 回答