我的一些應用程序從互聯網上獲取數據。我開始編寫單元測試的習慣,並且我懷疑如果我爲從互聯網返回的值編寫測試,我會遇到延遲和/或可靠性問題。一個單元如何測試網絡相關操作?
什麼是測試「位於Web請求的另一端」的數據的有效方法?
我正在使用Xcode附帶的股票單位測試工具包,但這個問題在理論上適用於任何測試框架。
我的一些應用程序從互聯網上獲取數據。我開始編寫單元測試的習慣,並且我懷疑如果我爲從互聯網返回的值編寫測試,我會遇到延遲和/或可靠性問題。一個單元如何測試網絡相關操作?
什麼是測試「位於Web請求的另一端」的數據的有效方法?
我正在使用Xcode附帶的股票單位測試工具包,但這個問題在理論上適用於任何測試框架。
我提出了這個問題上freenode.net上#macdev IRC頻道德高望重的人,和我有一個很少有很好的答案。
Mike Ash(mikeash.com)建議在我的應用程序內部實現本地Web服務器。對於複雜的情況,我可能會這樣做。但是,我只是使用initWithContentsOfURL:(NSURL *)url
中的一些內置方法NSData
。
對於更簡單的情況,mike表示另一種方法是將base64編碼的虛擬數據直接傳遞給NSData初始值設定項。 (使用data://dummyDataEncodedAsBase64GoesAfterTheDataProtocolThingy
。)
同樣,「alistra」建議使用指向包含模擬數據的文件的本地文件URL。
除其他:
所有這些都應該優雅地失敗(無論是在服務器端或客戶端)
Unit
測試專注於您班級的業務邏輯。不會有延遲,可靠性等問題,因爲您會使用一些模擬對象來模擬實際交互的內容。
你所描述的是某種形式的integration
測試,對於OP來說似乎不是你的意圖。
你應該「晦澀」的另一端被嘲笑並沒有真正訪問網絡,遠程數據庫等
但是,如何確保我的「成功」案件實際通過? – Moshe