XCTAssertEqual fails to compare two string values?

北慕城南 提交于 2019-11-30 04:09:20

From the documentation of XCTAssertEqual:

Generates a failure when a1 is not equal to a2. This test is for C scalars, structs and unions.

You should use XCTAssertEqualObjects (which uses isEqual: internally) or something like:

XCTAssertTrue([[firstNickName initialsFromString] isEqualToString:expectedResult],
              @"Strings are not equal %@ %@", expectedResult, [firstNickName initialsFromString]);

I've just had a similar issue which might help someone.

I have a Float extension function which returns a string. The following test fails:

testValue = 0.01
XCTAssertEqual(testValue.formattedForCost(), "0,01 €")

With the following message:

Assertions: XCTAssertEqual failed: ("Optional("0,01 €")") is not equal to ("Optional("0,01 €")")

Which is rather annoying. However I discovered if I change my test to use the unicode no-break space character:

XCTAssertEqual(testValue.formattedForCost(), "0,01\u{00a0}€")

It passes.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!