【问题标题】:Async method testing using XCTest使用 XCTest 进行异步方法测试
【发布时间】:2016-04-20 02:09:32
【问题描述】:

我是 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) {
       }]



  }

【问题讨论】:

  • 虽然单元测试有异步测试的技术,但一般来说异步流程和单元测试并不匹配。

标签: ios objective-c xctest


【解决方案1】:

您需要研究为异步测试提供支持的 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 类文档。

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 2014-02-14
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2021-11-16
    • 2014-09-02
    • 2021-06-08
    • 2013-03-15
    相关资源
    最近更新 更多