2015-07-21 57 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的实例是浮点值。比较他们的平等是巫术。