vendredi 5 juin 2015

Testing network which uses AFNetworking with OCMock

I have a class Network that contain next method:

- (void)fetchRecords {
Network * __weak weakSelf = self;
[self.sessionManager POST:@"" parameters:@{@"parameter":"param1"}
                               success:^(NSURLSessionDataTask *task, id responseObject) {
    [weakSelf setRecordsWithLists:responseObject];
}
                               failure:nil];

} Property sessionManager is AFHTTPSessionManager class. I want to test my network communication. I want to check that if success block executed then invoked setRecordsWithLists: method.

I use OCMock, I googled and write next test code:

- (void)tesNetworkSuccessExecuteSetRecords {
id partiallyMockedSessionManager = [OCMockObject partialMockForObject:self.network.sessionManager];

[[partiallyMockedSessionManager expect] POST:OCMOCK_ANY parameters:OCMOCK_ANY success:OCMOCK_ANY failure:OCMOCK_ANY];
[[[partiallyMockedSessionManager expect] andDo:^(NSInvocation *invocation) {
    void (^successBlock)(NSURLSessionDataTask *task, id responseObject);
    [invocation getArgument:&successBlock atIndex:4];
    successBlock(nil, @[@"first", @"second"]);
}] POST:OCMOCK_ANY parameters:OCMOCK_ANY success:OCMOCK_ANY failure:OCMOCK_ANY];

self.network.sessionManager = partiallyMockedAuthorizationSessionManager;

[self.network fetchRecords];

}

Please, tell how to return my own response for success block, if do it wrong. And how to verify that setRecordsWithLists: called from success block.

Aucun commentaire:

Enregistrer un commentaire