2015-07-21 8 views
0

Я пытаюсь написать модульный тест для моего метода, выполняющего некоторые операции над NSDecimalNumber. Для простоты я подготовил этот простой блок тестовый фрагмент кода:NSDecimalNumber unit test fight

- (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"]); 
} 

... или (не проверял, является ли NSNumber и NSDecimalNumber могут быть равны, но это должно быть так) ...

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

значения Однако случаи NSDecimalNumber являются плавающей точкой. Сравнение их для справедливости - вуду.