我正在尝试运行一些单元测试以使用 RestKit v0.20 测试我的映射,但是我收到一个错误,即我的目标对象为零。我已经追踪到映射失败的事实,因为 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 对象