代碼一般按順序執(zhí)行纸厉,但是對于Asynchronous call的情況晨横,可能會導致測試代碼執(zhí)行玩啡直,還沒有callback,為了解決這個問題镀脂,test framework有個概念叫做expectation牺蹄,你設置它并要滿足某些條件才會繼續(xù)執(zhí)行,當?shù)却齟xpectation,你可以設置一個超時的時間薄翅,令測試不在等待
Paste_Image.png
Swift比OC創(chuàng)建Mock Objects要麻煩沙兰,OC動態(tài)分發(fā)機制。在Swift中Mock Object以通過subclass來得到翘魄,通過封裝來實現(xiàn)鼎天,然后重載一些方法和屬性。
Paste_Image.png
接下來我們測試下這個方法熟丸,這個方法的completion的Bool一直會返回false训措。因為要用戶先登錄,才有數(shù)據(jù)。
Paste_Image.png
cmd+U運行
Paste_Image.png
把它改成下面這樣也成功了
Paste_Image.png
注意的是這里是異步執(zhí)行的绩鸣,里面XCTAssertTrue沒有被執(zhí)行怀大,所以也通過了。
對于異步的操作要用expectation呀闻。
Paste_Image.png
這個之所以失敗了化借,是因為loadCloudTestData方法的callback是在2秒后。我們把它設置為3秒捡多,測試通過了
Paste_Image.png
這里一直返回false蓖康,但是如果我們想測試true的情況呢?
Paste_Image.png