Несколько дней назад я понял, как мне написать тест для 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
приспособление с ответом и запросом? Что дальше?
Что я хочу протестировать? - Если сопоставление запроса и ответа в порядке (мне трудно понять, как должен выглядеть тест)
заранее спасибо