現在的問題是,差值是一個負數;所以,得分是100-(-5)。解決方法是使用差異的絕對值即可。為此,在方法check(_:)中取消正確代碼前面的注釋,并刪除不正確的代碼即可。
刪除上面設置的兩個斷點并再一次運行測試,以確認上面代碼行現在已順利通過。
使用XCTestExpectation測試異步操作
到目前為止,你已經學會了如何測試模型和調試測試失敗。接下來,讓我們繼續學習如何使用XCTestExpectation來測試網絡相關的操作。
首先,請打開HalfTunes項目。你會注意到,它使用URLSession來查詢iTunes API和下載歌曲樣本。假設您想修改它,以便使用AlamoFire進行網絡操作。為了查看是否出現任何中斷情況,您應為網絡操作編寫測試,并在更改代碼之前和之后運行它們。
URLSession方法是異步執行的︰它們會馬上返回,但只有運行一段時間后才真正完成。為了測試異步方法,你應使用XCTestExpectation使你的測試等待異步操作完成。
值得注意的是,異步測試通常很慢,所以你應該把它們與你另外的一些運行速度更快的單元測試分開。
從菜單“+”下選擇并運行命令“New Unit Test Target…”,然后把目標命名為HalfTunesSlowTests。然后,在import語句的下面導入HalfTunes程序:
在此類中的所有測試都將使用默認會話把請求發送到蘋果公司的服務器。所以,我們在方法setup()中聲明并創建一個sessionUnderTest對象,然后在方法tearDown()中釋放它: