2015-07-21 40 views
0

我試圖寫單元測試我的方法做對NSDecimalNumber一些操作。爲了簡單起見,我準備這個簡單的單元測試代碼片段:NSDecimalNumber單元測試鬥爭

- (void) testTmp { 
    NSDecimalNumber* val = [NSDecimalNumber decimalNumberWithString:@"0"]; 
    XCTAssertEqual([val stringValue], @"0"); 
} 

不幸的是失敗,我不能讓它開始工作。我究竟做錯了什麼?如何測試是否NSDecimalNumber的值等於其他的價值?

回答

0
XCTAssertEqual()

比較對象的引用。您應該使用XCTAssertEqualObjects()

- (void) testTmp { 
    NSDecimalNumber* val = [NSDecimalNumber decimalNumberWithString:@"0"]; 
    XCTAssertEqualObjects([val stringValue], @"0"); 
} 

BTW:你不應該比較數字的字符串表示,但數字本身...:

- (void) testTmp { 
    NSDecimalNumber* val = [NSDecimalNumber decimalNumberWithString:@"0"]; 
    XCTAssertEqualObjects(val, [NSDecimalNumber decimalNumberWithString:@"0"]); 
} 

...或(沒有檢查,是否NSNumberNSDecimalNumber可以相等,但它應該是這樣)...

- (void) testTmp { 
    NSDecimalNumber* val = [NSDecimalNumber decimalNumberWithString:@"0"]; 
    XCTAssertEqualObjects(val, @0); 
} 

但是,NSDecimalNumber的實例是浮點值。比較他們的平等是巫術。