В настоящее время я работаю с простым объектом, который имеет значение lat и lng как NSString. Но когда я пытаюсь утверждать, что они равны я получаю отказ ж/этот подходКак написать единичный тест для геопозиции с 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 .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]" должно быть правдой. Фактическая широта местоположения была 41.6756668
Как сравнить эти значения NSString в ocUnit? вот .h файл для размещения 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
@retainCount вы являетесь победителем сэра, получается, что фактическим является NSDecimalNumber, и ожидается, что NSCFString ... так как я могу вместо этого использовать его как строку? Спасибо, сэр! –
Вы не производите его как строку. Вы сравниваете его соответственно для десятичных чисел (например, с допуском). –