objective c XCTAssertEqual दो स्ट्रिंग मानों की तुलना करने में विफल रहता है?




objective-c unit-testing (2)

मेरे पास अभी भी एक समान समस्या है जो किसी की मदद कर सकती है।

मेरे पास फ्लोट एक्सटेंशन फ़ंक्शन है जो एक स्ट्रिंग देता है। निम्नलिखित परीक्षण विफल रहता है:

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}€")

वो चला गया।

मैंने अपने स्ट्रिंग एक्सटेंशन का परीक्षण करने के लिए एक साधारण इकाई परीक्षण जोड़ा। लेकिन यह विफल रहता है। मैं यहाँ क्या गलत कर रहा हूँ?

जो मुझे पता है XCTAssertEqual परीक्षण मूल्य है, न कि ऑब्जेक्ट स्वयं?

तीसरी पंक्ति XCTAssertEqual कहना है कि स्ट्रिंग बराबर है, लेकिन 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 के प्रलेखन से:

एक विफलता उत्पन्न करता है जब ए 1 ए 2 के बराबर नहीं होता है। यह परीक्षण सी स्केलर्स, structs और संघों के लिए है।

आपको XCTAssertEqualObjects उपयोग करना चाहिए (जो isEqual: आंतरिक रूप से उपयोग करता है) या कुछ ऐसा है:

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




xctest