我正在使用一个反向字符串的函数,即使它有表情符号字符。该功能在所有情况下都很有效。现在我正在为这个方法编写测试用例,除了带有表情符号的测试外,它会通过所有测试,即使反向字符串是完全正确的。如果字符串具有表情符号字符,isEqualToString
似乎无法正常工作。这是Assert方法:
- (void)doTestCase:(NSString *)test assertedValue:(NSString *)value{
NSString *reversedString = [test reversedString];
XCTAssert([reversedString isEqualToString:value]);
}
我称之为:
[self doTestCase:@"LOL" assertedValue:@"LOL"];
但即使反向字符串完全相同,它也会失败。
尝试转换为UniCode,但同样的问题:
- (void)doTestCase:(NSString *)test assertedValue:(NSString *)value{
NSString *reversedString = [test reversedString];
NSData *data = [value dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
data = [reversedString dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodReversedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
XCTAssert([goodReversedString isEqualToString:goodValue]);
}