簡體   English   中英

Xcode 8 / Swift 3 中的 iOS 異步單元測試(waitForExpectations 失敗)

[英]iOS Asynchronous Unit Testing (waitForExpectations failing) in Xcode 8 / Swift 3

我正在更新我為使用 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。 我不認為這是問題所在,但我認為這可能值得一提。 打印出來的錯誤信息是“未知錯誤”。

如果您正在嘗試測試您正在開發的 CocoaPod,出於某種原因,它創建的默認測試目標會使 waitForExpectations() 函數無法針對該特定測試目標正常工作。 通過按順序執行以下步驟,我能夠使其最終工作:

  1. 刪除當前測試目標
  2. 創建一個新的測試目標
  3. 運行 pod install 並確保相應地更新 pod 文件

按照這些步驟,我能夠讓 waitForExpectations() 最終在我的網絡請求中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM