【问题标题】:How test mapping in RestKit method postObject:path:parameters:success:failure: with OCMock如何在 RestKit 方法 postObject:path:parameters:success:failure: 中使用 OCMock 测试映射
【发布时间】:2013-12-04 06:20:03
【问题描述】:

几天前我明白我应该如何使用 OCMock 为 RestKit 编写测试。

测试方法:

- (void)signUpWithUsername:(NSString *)username email:(NSString *)email password:(NSString *)password block:(SignUpBlock)block {

if (!username || !email || !password) {
    return;
}

CTFUser *user = [CTFUser createObject];
user.username = username;
user.email = email;
user.password = password;
[_connection.manager postObject:user path:@"path" parameters:nil
                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                            block(YES);
                        } failure:^(RKObjectRequestOperation *operation, NSError *error) {
                            block(NO);
                        }];
}

测试用例(检查在rest kit调用成功块时是否调用了自定义块): - (void)testBlockShouldReturnYesIfSuccess { id mockClient = [OCMockObject mockForClass:[AFHTTPClient class]];

RKObjectManager *manager = [[RKObjectManager alloc] init];
manager.HTTPClient = mockClient;
id mockMananger = [OCMockObject partialMockForObject:manager];

[[[mockMananger expect] andDo:^(NSInvocation *invocation) {
    void (^successblock)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) = nil;
    [invocation getArgument:&successblock atIndex:5];
    successblock(nil, OCMOCK_ANY);
}] postObject:OCMOCK_ANY path:OCMOCK_ANY parameters:nil success:OCMOCK_ANY failure:OCMOCK_ANY];

SignUpBlock block = ^(BOOL success) {
    XCTAssertTrue(success, @"");
};

CTFAPIConnection *connection = [[CTFAPIConnection alloc] initWithManager:mockMananger];
_accounts = [[CTFAPIAccounts alloc] initWithConnection:connection];
id mockAccounts = [OCMockObject partialMockForObject:_accounts];
[mockAccounts signUpWithUsername:@"username" email:@"email" password:@"password" block:block];
}

此测试通过。但是如何测试这个请求和响应的映射是否正常?这个测试没有检查我应该用响应和请求制作一些JSON 夹具吗?下一步是什么?

我想测试什么? - 如果请求和响应映射没问题(我很难意识到测试应该是什么样子)

提前谢谢你

【问题讨论】:

    标签: objective-c unit-testing tdd restkit ocmock


    【解决方案1】:

    好的,我找到了一些不错的资源。 https://github.com/RestKit/RestKit/wiki/Unit-Testing-with-RestKit。如果我理解我应该使用与真实请求隔离的JSON 固定装置来测试映射,第二个好方法是创建一些只返回一些固定装置的测试服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多