使用XCTest进行异步方法测试

时间:2016-04-20 02:09:33

标签: ios objective-c xctest

我是XCTest的新手并开始编写测试用例。我写了几个功能测试用例,但我陷入了下面的异步方法调用。我阅读了XCTestExpectation类引用,但无法正确模拟。

如果要了解如何测试以下方法,那将非常有用。

以下是我要测试的方法的详细信息,

- (void)getStudentInfo:(void (^)(BOOL))success failure:(void (^)(NSError *error))failure {


   // Request formation CODE
   // Here I have post call to AFNetworking

    [httpSessionManager POST:uri
   parameters:para
      success:^(NSURLSessionDataTask *task, id responseObject) {

      failure:^(NSURLSessionDataTask *task, NSError *error) {
       }]



  }

1 个答案:

答案 0 :(得分:3)

您需要研究XCTest期望,它们为异步测试提供支持。这是一个简化的例子(在Swift中,但同样适用于Objective-C)

func testAsync() {

    let expectation = expectationWithDescription("Waiting for something")

    let someObject = ...
    someObject.doSomethingWithCompletion({ () in
            expectation.fulfill()
        })

    waitForExpectationsWithTimeout(3.0, handler: nil)

    // Verify Results
}

简单的解释是测试将在waitFor...等待,直到调用fulfil()方法。或超时并抛出错误。

您还可以设置对通知和属性的期望。查看XCTest类doco了解详细信息。