1. ホーム
  2. objective-c

[解決済み] XCTAssertEqualが2つの文字列値の比較に失敗する?

2023-08-12 02:41:13

質問

私の文字列拡張をテストするために簡単なユニットテストを追加しました。しかし、それは失敗します。私はここで何が間違っているのでしょうか?

私が知っていることから XCTAssertEqual は値をテストしているのであって、オブジェクトそのものをテストしているのではないですよね?

3行目の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]);