現在、latとlngの値をNSStringとして保持する単純なオブジェクトを扱っています。 [LocationParseJsonTest testLocationParseJson]:'41 0.6756668' は'41 0.6756668に等しくなければなりません - :私は、彼らは私がここにこのアプローチ/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);
}
wの失敗を取得等しい主張しようとしたときが、エラーが
エラーを示しています「実際の場所の緯度は、私が 『のisEqual』
STAssertTrue([expectedLocation.lat isEqual: actualLocation.lat], @"The actual location latitude was %@", actualLocation.lat);
ているassertTrueのアプローチを試してみましたので、代わり41.6756668
だったと私は取得します同じエラー
エラー: - [LocationParseJsonTest testLocationParseJson]: "[expectedLocation.lat isEqual:actualLocation.lat]"がtrueになります。実際の位置の緯度は41.6756668
どのようにこれらのNSString値をocUnitで比較すればよいですか?ここにあなたがそれらを比較することisEqualToString
方法を使用する必要がありますNSStringsを比較するとき、私は信じている場所FYI
@interface Location : NSObject {
NSString* lng;
NSString* lat;
}
@property (nonatomic, retain) NSString* lng;
@property (nonatomic, retain) NSString* lat;
@end
2つのオブジェクトが実際にNSStringのインスタンスであることは肯定的ですか?おそらく、[expectedLocation.lat class]&[actualLocation.lat class]を含むように失敗メッセージを展開する必要があります。 – retainCount
@retainCountあなたは勝者ですが、実際はNSDecimalNumberであり、期待されるのはNSCFStringです。代わりに文字列に変換するにはどうすればいいですか?ありがとうございます! –
文字列にキャストしません。小数に対して適切に比較します(例:公差付き)。 –