我目前正在處理一個簡單的對象,該對象將lat和lng值保存爲NSString。但是,當我試圖斷言他們是平等的,我得到一個失敗W /這種方法如何使用ocUnit編寫地理位置的單元測試
- (void) testLocationParseJson {
NSArray* items = //some array the represents the json returned from google ...
LocationParseJson* sut = [[LocationParseJson alloc] init];
Location* actualLocation = [sut parseJson:items];
NSString* actualLatitude = actualLocation.lat;
NSString* actualLongitude = actualLocation.lng;
STAssertEqualObjects(expectedLocation.lat, actualLocation.lat, @"The actual location latitude was %@", actualLocation.lat);
}
這裏顯示的錯誤
錯誤: - [LocationParseJsonTest testLocationParseJson]:'41 0.6756668' 應等於'41 0.6756668 「實際位置緯度是41.6756668
所以不是我試過AssertTrue辦法與‘的isEqual’
STAssertTrue([expectedLocation.lat isEqual: actualLocation.lat], @"The actual location latitude was %@", actualLocation.lat);
而且我得到的同樣的錯誤
錯誤: - [LocationParseJsonTest testLocationParseJson]:「[expectedLocation.lat isEqual:actualLocation.lat]」應該爲true。實際的位置緯度是41.6756668
我應該如何比較這些在ocUnit中的NSString值?這裏是位置FYI
@interface Location : NSObject {
NSString* lng;
NSString* lat;
}
@property (nonatomic, retain) NSString* lng;
@property (nonatomic, retain) NSString* lat;
@end
你確定這兩個對象實際上是NSString的實例嗎?也許你應該擴展你的失敗消息來包含[expectedLocation.lat class]&[actualLocation.lat class]。 – retainCount 2011-02-03 01:17:20
@retainCount你是勝利者先生,結果證明實際是NSDecimalNumber,預計是NSCFString ...所以我怎樣才能把它轉換成字符串呢?謝謝你,先生! – 2011-02-03 01:35:52