【问题标题】:iOS Asynchronous Unit Testing (waitForExpectations failing) in Xcode 8 / Swift 3Xcode 8 / Swift 3 中的 iOS 异步单元测试(waitForExpectations 失败)
【发布时间】:2016-09-25 20:42:02
【问题描述】:

我正在更新我为使用 Swift 3 而开发的 Cocoapod。在升级之前,我所有的异步单元测试都运行良好。但是现在升级后,它们中的每一个都立即失效,我不知道为什么。以下是每一个的结构:

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。我认为这不是问题,但我认为这可能值得一提。打印出来的错误信息是“未知错误”。

【问题讨论】:

    标签: ios xcode alamofire xctest


    【解决方案1】:

    如果您尝试测试您正在开发的 CocoaPod,出于某种原因,它创建的默认测试目标会使 waitForExpectations() 函数无法针对该特定测试目标正常工作。通过按顺序执行以下步骤,我能够让它最终工作:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2013-03-14
      • 2016-01-02
      • 2012-04-09
      • 2017-08-12
      相关资源
      最近更新 更多