RestKit v0.20 でマッピングをテストするためにいくつかの単体テストを実行しようとしていますが、宛先オブジェクトが nil であるというエラーが表示されます。sourceType が NSArray で、destinationType が NSNumber であるため、マッピングが失敗しているという事実までこれを追跡しました。これは、マッピング キーパスが正しくないためだと思います。songCard JSON をオブジェクトにマップしようとしています。JSON とマッピング テストを以下に含めます。誰かが正しいキーパスを設定するのを手伝ってくれたらうれしいです。
{"status" : 2000,
"content" : {
"cardList" : [
{
"songCard" : {
"likes" : 2,
"dislikes" : 3
}
}
]
},
"message" : "OK"
}
ユニットテストクラス
- (RKObjectMapping *)songMetadataMapping
{
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[SongMetadata class]];
[mapping addAttributeMappingsFromDictionary:@{
@"content.cardList.songCard.likes": @"likes"
}];
return mapping;
}
- (void)testSongMetadataMapping
{
NSString *parsedJSON = [RKTestFixture parsedObjectWithContentsOfFixture:@"songMetadata.json"];
RKMappingTest *test = [RKMappingTest testForMapping:[self songMetadataMapping] sourceObject:parsedJSON destinationObject:nil];
[test addExpectation:[RKPropertyMappingTestExpectation expectationWithSourceKeyPath:@"content.cardList.songCard.likes" destinationKeyPath:@"likes" value:@"2"]];
STAssertTrue([test evaluate], @"Mappings failed");
}
更新 さらにデバッグした後、JSON 文字列の値 2 が NSArray として評価されていることがわかりましたが、これは NSNumber として評価する必要があります。簡単なテストとして、JSON の [ ] を削除すると、値 2 が NSNumber として正しく評価されました。JSONをsongCardオブジェクトの配列として識別する必要があるため、これは私の問題を解決しません