在接口測試時,我們常常會碰到異步測試場景,比如iOS手機管家中與后臺請。
求相關的接口(小資訊請求、詐騙短信云查殺等),都需要等待后臺返回結果數據到客戶端。在等待子線程完成任務時候,我們繼續主線程其他代碼執行,同時,異步等待子線程返回的結果數據,并用回調函數來處理即將接收的結果數據。
在XCode6以上版本中,蘋果添加了用于異步回調測試的api,因此不用像舊版本那樣,發起異步調用后通過循環查詢標志位,來檢查異步回調函數的調用了。在新版本中直接使用XCTestExpectation的API即可實現這一功能。
a、Block方式回調;
在單測開始位置聲明需要使用的Expectation對象,在回調中觸發fulfill函數,單測的末尾調用api進行等待,舉例如下:
b、代理Delegate方式回調;
與block方式回調類似,不過由于回調函數在單測函數外側,需要把變量聲明到類中,舉例如下:
Ps:如果希望保持測試用例與被測工程代碼的獨立性,回調函數需要在測試類中進行重寫;否則,被測工程代碼需要做些調整(例如:直接在工程代碼中增加宏,在當前模式為測試模式時,在對應的回調函數中進行fulfill調用)。
a、私有變量的訪問和修改;
原文轉自:http://tmq.qq.com/2017/07/ios/