【发布时间】:2015-06-05 12:22:29
【问题描述】:
我有一个包含下一个方法的类网络:
- (void)fetchRecords {
Network * __weak weakSelf = self;
[self.sessionManager POST:@"" parameters:@{@"parameter":"param1"}
success:^(NSURLSessionDataTask *task, id responseObject) {
[weakSelf setRecordsWithLists:responseObject];
}
failure:nil];
}
属性sessionManager 是AFHTTPSessionManager 类。
我想测试我的网络通信。我想检查是否执行成功块然后调用setRecordsWithLists: 方法。
我使用 OCMock,我用谷歌搜索并编写了下一个测试代码:
- (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];
}
如果做错了,请告诉我如何返回我自己的成功块响应。以及如何验证setRecordsWithLists: 是从成功块调用的。
【问题讨论】:
标签: unit-testing afnetworking-2 ocmock