XCTAssertEqual fails to compare two string values?
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.
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]);