Как проверить сопоставление в методе RestKit postObject:path:parameters:success:failure: с помощью OCMock

Несколько дней назад я понял, как мне написать тест для RestKit с помощью OCMock.

метод проверки:

- (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);
                        }];
}

тестовый пример (проверьте, был ли вызван пользовательский блок, когда блок успеха был вызван пакетом отдыха): - (void) testBlockShouldReturnYesIfSuccess { id mockClient = [OCMockObject mockForClass: [класс AFHTTPClient]];

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 приспособление с ответом и запросом? Что дальше?

Что я хочу протестировать? - Если сопоставление запроса и ответа в порядке (мне трудно понять, как должен выглядеть тест)

заранее спасибо


person Tomasz Szulc    schedule 04.12.2013    source источник


Ответы (1)


Хорошо, я нашел хороший ресурс. https://github.com/RestKit/RestKit/wiki/Unit-Testing-with-RestKit. Если я понял, я должен протестировать сопоставление с JSON фикстурами, изолированными от реальных запросов, и второй хороший способ - создать тестовый сервер, который возвращает только некоторые фикстуры.

person Tomasz Szulc    schedule 04.12.2013