2015-10-08 88 views
10

在Swift 2.0中編寫自動化UI測試時,是否有辦法模擬請求?據我所知,UI測試應該獨立於其他功能。有沒有辦法模擬來自服務器請求的響應,以測試依賴於響應的UI的行爲。例如,如果服務器關閉,UI測試仍應運行。快速舉例,登錄時,如果密碼失敗則模擬,然後UI應該顯示警報,但是,如果登錄成功,則應顯示下一頁。模擬API請求Xcode 7 Swift自動化UI測試

+0

添加了一些更合適的標籤。 – Liam

+0

我認爲@JoeMasilotti是正確的。然而,在我的生產代碼中,我會對包含嘲笑有點緊張。 –

+0

您可能想要查看SBTUITestTunnel,它可以方便地將測試代碼中的數據動態插入到應用程序代碼中。看到我的答案[這裏](http://stackoverflow.com/questions/36768883/how-do-i-mock-network-requests-in-xcode-ui-tests-while-the-tests-are-running/36909859 #36909859) –

回答

6

在其目前的實施中,這不是直接可能與UI測試。框架直接代碼的唯一接口是launch arguments/environment

您可以讓應用程序在此上下文中查找特定的鍵或值,並切換一些功能。例如,如果設置了MOCK_REQUESTS密鑰,則在網絡層注入MockableHTTPClient而不是實際的HTTPClient。我寫了關於setting the parameters和NSHipster有關於how to read them的文章。

雖然不理想,但在技術上可以通過一些運動來完成您正在尋找的東西。

這裏是一個tutorial on stubbing network data for UI Testing我放在一起。它會引導您完成啓動和運行所需的所有步驟。

0

如果您擔心mock因任何原因進入生產環境的想法,可以考慮使用第三方解決方案,如Charles Proxy

使用地圖本地工具,您可以將來自特定端點的呼叫路由到本機上的本地文件。您可以在您的本地文件中傳入純文本,其中包含您希望它返回的響應。根據您的例子:

你登錄點擊端點yoursite.com/login

在查爾斯您在使用地圖的本地工具,您可以路由呼叫擊中該端點,以保存在計算機即mappedlocal.txt

上的文件

mappedlocal.txt包含以下文本
HTTP/1.1 404失敗

當查爾斯正在運行,你打這個端點你的反應會回來一個404錯誤。

您還可以在Charles中使用另一個名爲「map remote」的選項,並構建一個完整的模擬服務器,它可以根據需要處理呼叫和響應。這可能不是你正在尋找的東西,而是它可以幫助別人的一個選項,也是我自己使用的一個選項。