是否有任何方法來存儲用Swift編寫的UITests的網絡請求?如何在UITesting上存根網絡請求
我已經安裝了OHHTTPStubs pod,但無法設法通過使用它的方法來存儲我的網絡請求,這是因爲UITest目標和應用程序目標是在不同的線程中執行的。
我會感激任何建議。
是否有任何方法來存儲用Swift編寫的UITests的網絡請求?如何在UITesting上存根網絡請求
我已經安裝了OHHTTPStubs pod,但無法設法通過使用它的方法來存儲我的網絡請求,這是因爲UITest目標和應用程序目標是在不同的線程中執行的。
我會感激任何建議。
需要在測試應用程序的代碼而不是測試代碼中完成存根。這是因爲UI測試過程不能控制被測試應用的網絡,因爲它們彼此分離。
當您從測試中啓動應用程序時發送啓動參數,並在應用程序中讀取啓動參數以調用作爲的一部分的存根(AppDelegate
)。
let app = XCUIApplication()
app.launchArguments = ["stub"]
app.launch()
你這裏有兩種不同的選擇:
你可以採取Oletha的做法,和觸摸應用程序的代碼的網絡。您必須存儲NSURLSession以注入所需的響應,並使用一些啓動參數來確定何時使用存根會話而不是常規會話。有關如何操作的更多詳細信息,請參見:http://masilotti.com/ui-testing-stub-network-data/
您可以運行本地服務器並直接從您的測試代碼注入數據。巨大的優勢是你根本不必觸碰你的應用程序代碼。在測試過程中,您也可以輕鬆更改您的響應,而這對於第一個解決方案來說是不可能的。
要運行本地服務器,您有幾個選項。我正在使用Swifter,但還有其他選項:Ambassador和SBUITestTunnel。
無論您選擇哪種解決方案,一般過程如下:
application:didFinishLaunchingWithOptions:
推出的說法,你的API的基礎URL切換到本地服務器之一:http://localhost您有更詳細的方法this article for Swifter
請看這篇文章http://masilotti.com/ui-testing-stub-network-data/ – Shahid