在Xcode 8 / Swift 3中,iOS异步单元测试(waitForExpectations失败)

4

我正在更新我开发的Cocoapod,以使用Swift 3。在我升级之前,我的所有异步单元测试都能正常运行。但现在升级后,它们每一个都立即失败了,而我不知道原因。以下是每个测试的结构:

override func setUp() {
        super.setUp()
        validationExpectation = expectation(description: "Validation")
}

.
.
.

func testSymbolRequest(){

        _ = MyCocoapod.makeSymbolRequest(symbol: "ABC", success: { (symbolObject) in
            self.validationExpectation.fulfill()
            XCTAssert(true)
        }) { (error) in
            self.validationExpectation.fulfill()
            XCTFail(error.description)
        }

        waitForRequestToFinish()
}

.
.
.

func waitForRequestToFinish(){
    waitForExpectations(timeout: 60.0) { (error) in
        if let error = error {
            XCTFail(error.localizedDescription)
        }
    }
}

waitForExpectations函数根本没有等待。在调用后立即失败。我已经确认这与我的实际网络代码无关,而且请求在我的Cocoapod示例项目中完全正常。我正在使用Alamofire。我不认为这是问题,但我认为值得一提。打印出的错误消息是“未知错误”。

1个回答

0

如果您正在尝试测试您正在开发的CocoaPod,由于某种原因,默认的测试目标会使得waitForExpectations()函数在特定的测试目标上无法正常工作。我最终通过按照以下步骤来实现它:

  1. 删除当前测试目标
  2. 创建一个新的测试目标
  3. 运行pod install并确保更新了相应的pod文件

按照这些步骤,我最终能够在我的网络请求中让waitForExpectations()函数正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接