当前位置:  开发笔记 > 前端 > 正文

使用Swift进行单元测试:未执行封闭体

如何解决《使用Swift进行单元测试:未执行封闭体》经验,为你挑选了1个好方法。

有些功能可以向服务器发送请求,获取响应和打印结果.他们总是在IOS应用程序本身工作,但有时只在这个应用程序的单元测试中(看起来像随机).

主要问题:xcode不会在单元测试中进入闭包体,只是跳过它.

任何想法如何解决? 在此输入图像描述



1> mokagio..:

最可能的原因是因为请求的完成关闭没有被完成,因为它们正在执行异步操作,而测试同步运行.这意味着当您的网络请求仍在处理时,测试将完成运行.

尝试使用XCTestExpectation:

func testIt() {
  let expectation = expectationWithDescription("foobar")

  // request setup code here...

  Alamofire.request(.POST, "...")
    .responseJSON { response in
      //
      // Insert the test assertions here, for example:
      //
      if let JSON = response.result.value as? [String: AnyObject] {
        XCTAssertEqual(JSON["id"], "1")
      } else {
        XCTFail("Unexpected response")
      }

      //
      // Remember to call this at the end of the closure
      //
      expectation.fulfill()
  }

  //
  // This will make XCTest wait for up to 10 seconds,
  // giving your request expectation time to fulfill
  //
  waitForExpectationsWithTimeout(10) { error 
    if let error = error {
      XCTFail("Error: \(error.localizedDescription)")
    }
  }
}

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有