2016-09-25 143 views
4

我正在更新我開發的使用Swift 3的Cocoapod。在升級之前,我所有的異步單元測試都工作得很好。但現在升級後,他們每一個都立即失敗,我不知道爲什麼。以下是每種結構的結構:xCode 8/Swift 3中的iOS異步單元測試(waitForExpectations失敗)

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。我不認爲這是問題,但我認爲這可能值得一提。打印出來的錯誤信息是「未知錯誤」。

回答

0

如果您試圖測試您正在開發的CocoaPod,出於某種原因,它創建的默認測試目標會使waitForExpectations()函數無法針對該特定測試目標正常工作。我能得到它終於做爲了執行這些步驟:

  1. 刪除當前的測試目標
  2. 創建一個新的測試目標
  3. 運行吊艙安裝,並確保該吊艙文件被更新據此

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