2017-04-04 50 views
0

是否有任何方法來存儲用Swift編寫的UITests的網絡請求?如何在UITesting上存根網絡請求

我已經安裝了OHHTTPStubs pod,但無法設法通過使用它的方法來存儲我的網絡請求,這是因爲UITest目標和應用程序目標是在不同的線程中執行的。

我會感激任何建議。

+0

請看這篇文章http://masilotti.com/ui-testing-stub-network-data/ – Shahid

回答

1

需要在測試應用程序的代碼而不是測試代碼中完成存根。這是因爲UI測試過程不能控制被測試應用的網絡,因爲它們彼此分離。

當您從測試中啓動應用程序時發送啓動參數,並在應用程序中讀取啓動參數以調用作爲的一部分的存根(AppDelegate)。

let app = XCUIApplication() 
app.launchArguments = ["stub"] 
app.launch() 
0

你這裏有兩種不同的選擇:

  1. 你可以採取Oletha的做法,和觸摸應用程序的代碼的網絡。您必須存儲NSURLSession以注入所需的響應,並使用一些啓動參數來確定何時使用存根會話而不是常規會話。有關如何操作的更多詳細信息,請參見:http://masilotti.com/ui-testing-stub-network-data/

  2. 您可以運行本地服務器並直接從您的測試代碼注入數據。巨大的優勢是你根本不必觸碰你的應用程序代碼。在測試過程中,您也可以輕鬆更改您的響應,而這對於第一個解決方案來說是不可能的。

要運行本地服務器,您有幾個選項。我正在使用Swifter,但還有其他選項:AmbassadorSBUITestTunnel

無論您選擇哪種解決方案,一般過程如下:

  • 傳遞的啓動參數,以確定您正在運行UITests
  • 趕上在application:didFinishLaunchingWithOptions:推出的說法,你的API的基礎URL切換到本地服務器之一:http://localhost
  • 啓動服務器
  • 注入你的URL響應正在測試

您有更詳細的方法this article for Swifter