XCTAssertEqual无法比较两个string值?
我添加了一个简单的unit testing来testing我的string扩展。 但是失败了。 我在这里做错了什么?
从我所知道的XCTAssertEqual
是testing的价值,而不是对象本身?
第三行btw,表示string是平等的,但XCTAssertEqual
说,他们不是。
- (void) testInitialsFromFullname { NSString *firstNickName = @"Mike Kain"; NSString *expectedResult = @"MK"; NSLog(@"Equal:%@", [[firstNickName initialsFromString] isEqualToString:expectedResult] ? @"YES" : @"NO"); XCTAssertEqual(expectedResult, [firstNickName initialsFromString], @"Strings are not equal %@ %@", expectedResult, [firstNickName initialsFromString]); }
从XCTAssertEqual
的文档:
当a1不等于a2时生成失败。 这个testing是针对C标量,结构和联合的。
您应该使用XCTAssertEqualObjects
(使用isEqual:
内部)或类似的东西:
XCTAssertTrue([[firstNickName initialsFromString] isEqualToString:expectedResult], @"Strings are not equal %@ %@", expectedResult, [firstNickName initialsFromString]);
我刚刚有一个类似的问题,可能有助于某人。
我有一个返回一个string的Float扩展函数。 以下testing失败:
testValue = 0.01 XCTAssertEqual(testValue.formattedForCost(), "0,01 €")
有以下消息:
Assertions: XCTAssertEqual failed: ("Optional("0,01 €")") is not equal to ("Optional("0,01 €")")
这是相当烦人的。 但是,我发现如果我改变我的testing使用unicode不间断的空格字符 :
XCTAssertEqual(testValue.formattedForCost(), "0,01\u{00a0}€")
它通过。