1

この質問のタイトルが示すように、私は RestKit を使用しており、組み込みのテスト クラスを使用してオブジェクト マッピングをテストしたいと考えています。(ローカル) Web API から User オブジェクトを json として取得する小さなアプリケーションを作成しました。この部分は機能しますが、私のテスト ケースでは機能しないことがわかりました。

Blake Watters Unit Testing With RestKit Guideに従っていますが、成功できません。実際のアプリケーションは正常に動作することをもう一度明確にします (json を API からユーザー オブジェクトに問題なくマップできます) が、テスト ケースは以下に示すエラーで失敗します。したがって、どういうわけか、私のテストが間違っているのではないかと思います。

ここにいくつかのコードがあります:

エラーメッセージ

<RKMappingTest: 0xa242130>: failure when mapping from {
user =     {
    "first_name" = Kasper;
    id = 21;
    "last_name" = Fueled;
};
} to <User: 0xa23d730> with mapping <RKObjectMapping:0xa23d250 objectClass=User keyPath mappings => (
"RKObjectKeyPathMapping: id => userID",
"RKObjectKeyPathMapping: first_name => first_name",
"RKObjectKeyPathMapping: last_name => last_name",
)>. 

id キーは引用されていませんが、first_name と last_name は引用されていますが、違いがあるかどうかはわかりません。

user.json (更新: コンマを削除)

{ "user": {
       "id":21,
       "first_name":"Kasper",
       "last_name":"Fueled"
       }
}

user.json (旧)

{ "user": {
       "id":21,
       "first_name":"Kasper",
       "last_name":"Fueled",
       }
}

ユーザー.h

@property (strong, nonatomic) NSNumber *userID;
@property (strong, nonatomic) NSString *first_name;
@property (strong, nonatomic) NSString *last_name;

ユーザー マッピング

+ (RKObjectMapping *)objectMapping {
    return [RKObjectMapping mappingForClass:[User class] usingBlock:^(RKObjectMapping *mapping) {
        [mapping mapKeyPath:@"id" toAttribute:@"userID"];
        [mapping mapKeyPath:@"first_name" toAttribute:@"first_name"];
        [mapping mapKeyPath:@"last_name" toAttribute:@"last_name"];
    }];
}

テストケース

- (void)testMapping {
    id parsedJSON = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"];
    RKMappingTest *test = [RKMappingTest testForMapping:[User objectMapping] object:parsedJSON];

    [test expectMappingFromKeyPath:@"user.first_name" toKeyPath:@"first_name"];

    STAssertNoThrow([test verify], nil);
}

Blake のガイドに記載されているようにフィクスチャが作成されます。

4

1 に答える 1

0

さて、恥ずかしいことですが、私の問題の解決策は投稿しません。私がテストしていたコードではなく、テストのセットアップに問題があるという私の仮定は正しかった。私のjsonフィクスチャの最後のキーと値のペアの最後にコンマがあったことがわかりました。API の出力から直接コピーするのではなく、json フィクスチャを手書きしました。したがって、学んだ教訓は次のとおりです。

オブジェクト マッピングをテストしようとしている json 出力をコピーして、フィクスチャ ファイルに貼り付けます。手で入力しないでください。スペルミスなどが発生する可能性があります。

うまくいけば、コミュニティでそのようにやっている (またはやった!) のは私だけです。

于 2012-10-29T14:55:32.543 に答える