上面這個測試的目的是檢查發送到iTunes的有效的查詢是否能夠返回狀態碼200。顯然,其中大部分代碼與你在上面應用程序中所寫的一樣,只是增加了如下幾行︰
1.expectation(_:)返回一個XCTestExpectation對象;此對象存儲在變量promise中。此對象的其他常用名字是expectation和future。另外,description參數描述了你期望發生的事情。
2.為了匹配description參數,您需要在異步方法的完成處理程序的成功條件閉包中調用promise.fulfill()。
3.waitForExpectations(_:handler:)的作用是保持所有測試在運行中,直到所有的期望得以實現,或者timeout值指定的時間間隔結束——無論兩者哪一種早發生都行。
現在,再來運行該測試。如果你已經連接到互聯網,則當應用程序在模擬器中加載后成功測試大約花費一秒鐘時間。
使測試失敗更快一些
測試失敗會導致不少問題,但它未必花費很多時間?,F在,我們來解決如何快速確定是否您的測試失敗的問題。
為了修改一下您的測試,從而導致異步操作時失敗,你只需要從下面的URL中刪除“itunes”一詞后面的s字母即可:
運行上述測試時︰它會失敗,而且此測試會花費所有指定的超時間隔時間!這是因為它的期望是請求成功——正是在這個位置調用了promise.fulfill()方法。既然請求失敗,那么測試僅當在超過指定時限時才結束。
原文轉自:http://mobile.51cto.com/iphone-535758.htm