AFNetworking Post请求的单元测试

时间:2016-01-16 09:01:17

标签: ios xcode unit-testing xctest

我正在尝试为我使用AFNetworking的项目编写单元测试。我对我的请求使用以下操作:

- (void)testRegisterRequest{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    XCTAssert(Result,"Register failed!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     //Failure
}

因为它是异步的,所以从不测试我的XCTAssert行。 我搜索了很多,但我无法找到这些测试用例的教程或示例。请通过任何教程链接或提示帮助我。 提前致谢

2 个答案:

答案 0 :(得分:1)

这里有几件事。

  1. 您可以使用expectations进行异步测试:Asynchronous Testing With Xcode 6
  2. 您可以使用OHHTTPStubs来避免不必要的网络流量和服务器负载:Usage Examples

答案 1 :(得分:1)

XCTestExpectation是一种有效的方法。其他测试框架提供了不同的方法。例如,我们可以使用OCHamcrest测试成功响应,如下所示:

- (void)testRegisterRequest
{
    __block id response = nil;

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
        response = responseObject;
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    }];

    assertWithTimeout(5, thatEventually(response), is(notNilValue()));
}

您可能会测试其属性的响应,而不是简单地测试它不是零值。