developer tip

XCTAssertEqual이 두 문자열 값을 비교하지 못합니까?

optionbox 2020. 11. 10. 08:04
반응형

XCTAssertEqual이 두 문자열 값을 비교하지 못합니까?


문자열 확장을 테스트하기 위해 간단한 단위 테스트를 추가했습니다. 그러나 그것은 실패합니다. 내가 여기서 뭘 잘못하고 있니?

내가 아는 XCTAssertEqual것은 객체 자체가 아니라 값을 테스트하는 것입니까?

세 번째 줄 btw는 문자열이 같지만 그렇지 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와 같지 않을 때 실패를 생성합니다. 이 테스트는 C 스칼라, 구조체 및 공용체에 대한 것입니다.

XCTAssertEqualObjects( isEqual:내부적 으로 사용하는 ) 또는 다음과 같은 것을 사용해야합니다 .

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

누군가에게 도움이 될만한 비슷한 문제가 있습니다.

문자열을 반환하는 Float 확장 함수가 있습니다. 다음 테스트는 실패합니다.

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

다음 메시지와 함께 :

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

다소 성가신 일입니다. 그러나 유니 코드 중단없는 공백 문자 를 사용하도록 테스트를 변경하면 발견했습니다 .

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

통과합니다.

참고 URL : https://stackoverflow.com/questions/19464261/xctassertequal-fails-to-compare-two-string-values

반응형