XCTAssertEqual fails to compare two string values?

前端 未结 3 2022
伪装坚强ぢ
伪装坚强ぢ 2020-12-08 18:15

I added a simple unit test to test my string extension. But it fails. What I am I doing wrong here?

From what I know XCTAssertEqual is testing value and

相关标签:
3条回答
  • 2020-12-08 18:35

    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]);
    
    0 讨论(0)
  • 2020-12-08 18:45

    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.

    0 讨论(0)
  • 2020-12-08 18:48

    Comparing strings

    - (void) testStringComparison {
    
        NSString *first = @"my string";
        NSString *second = @"my string";
    
        NSMutableString *firstMutable = [NSMutableString stringWithString:first];
    
        //== comparing addresses of the objects(pointer comparison)
        //`first` and `second` has the same address it is a compiler optimization to store only one copy
        XCTAssertTrue(first == second);
        XCTAssertFalse(first == firstMutable);
    
        XCTAssertEqual(first, second);
        XCTAssertNotEqual(first, firstMutable);
        XCTAssertEqualObjects(first, firstMutable);
        XCTAssertTrue([first isEqualToString:firstMutable]);
    }
    
    0 讨论(0)
提交回复
热议问题