gpt4 book ai didi

objective-c - 如何使用 ocUnit 为地理位置编写单元测试

转载 作者:行者123 更新时间:2023-12-04 06:35:55 26 4
gpt4 key购买 nike

我目前正在使用一个简单的对象,该对象将 lat 和 lng 值保存为 NSString。但是当我试图断言它们是平等的时,我用这种方法失败了

- (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.6756668'应该等于'41.6756668'实际位置纬度是41.6756668

所以相反,我尝试了带有“isEqual”的 AssertTrue 方法
STAssertTrue([expectedLocation.lat isEqual: actualLocation.lat], @"The actual location latitude was %@", actualLocation.lat);

我得到了同样的错误

错误:-[LocationParseJsonTest testLocationParseJson]:“[expectedLocation.lat isEqual: actualLocation.lat]”应该是真的。实际位置纬度为 41.6756668

我应该如何比较 ocUnit 中的这些 NSString 值?这是 Location fyi 的 .h 文件
@interface Location : NSObject {
NSString* lng;
NSString* lat;
}

@property (nonatomic, retain) NSString* lng;
@property (nonatomic, retain) NSString* lat;

@end

最佳答案

这个 ocUnit 问题的最终解决方案是创建一个 NSDecimalNumber 并使用 STAssertTrue 将其与 isEqual 进行比较。希望这对其他人有帮助!

- (void) testLocationParseJson {
NSString* data = @"{\"name\":\"50035\",\"Status\":{\"code\":200,\"request\":\"geocode\"},\"Placemark\":[{\"id\":\"p1\",\"address\":\"Bondurant, IA 50035, USA\",\"AddressDetails\":{\"Accuracy\":5,\"Country\":{\"AdministrativeArea\":{\"AdministrativeAreaName\":\"IA\",\"Locality\":{\"LocalityName\":\"Bondurant\",\"PostalCode\":{\"PostalCodeNumber\":\"50035\"}}},\"CountryName\":\"USA\",\"CountryNameCode\":\"US\"}},\"ExtendedData\": {\"LatLonBox\": {\"north\": 41.7947250,\"south\": 41.6631189,\"east\": -93.3662679,\"west\": -93.5322489}},\"Point\":{\"coordinates\":[-93.4805335,41.6756668,0]}}]}";
NSArray* items = [data JSONValue];

NSDecimalNumber* expectedLat = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%@", @"41.6756668"]];
NSDecimalNumber* expectedLng = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%@", @"-93.4805335"]];

LocationParseJson* sut = [[LocationParseJson alloc] init];
Location* actualLocation = [sut parseJson:items];

STAssertTrue([expectedLat isEqual: actualLocation.lat], @"The actual location lat was %@", actualLocation.lat);
STAssertTrue([expectedLng isEqual: actualLocation.lng], @"The actual location lng was %@", actualLocation.lng);
}

关于objective-c - 如何使用 ocUnit 为地理位置编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com