在Swift 2.0中编写自动化UI测试时,有没有办法模拟请求。据我所知,UI测试应该独立于其他功能。有没有办法模拟来自服务器请求的响应,以便测试依赖于响应的UI的行为。例如,如果服务器关闭,UI测试应该仍在运行。快速示例,对于登录,模拟如果密码失败,则UI应显示警报,但是,如果登录成功,则应显示下一页。
发布于 2015-10-08 18:49:31
在它目前的实现中,这不能直接通过UI测试来实现。框架对代码的唯一直接接口是通过它的launch arguments/environment。
您可以让应用程序在此上下文中查找特定的键或值,并切换某些功能。例如,如果设置了MOCK_REQUESTS密钥,则在网络层中注入MockableHTTPClient而不是真正的HTTPClient。我写了一篇关于setting the parameters的文章,NSHipster有一篇关于how to read them的文章。
虽然不是很理想,但在技术上可以通过一些跑腿工作来完成您正在寻找的东西。
这是我组装的一个tutorial on stubbing network data for UI Testing。它将引导您完成启动和运行该应用程序所需的所有步骤。
发布于 2016-06-23 23:51:48
如果你担心mock会因为任何原因进入生产环境,你可以考虑使用第三方解决方案,比如Charles Proxy。
使用map local工具,您可以将来自特定端点的调用路由到您机器上的本地文件。您可以在本地文件中传递包含您希望其返回的响应的纯文本。根据您的示例:
您的登录名将访问端点yoursite.com/login
在Charles中,您可以使用地图本地工具将到达该端点的呼叫路由到保存在您的计算机上的文件,即mappedlocal.txt
mappedlocal.txt包含以下文本
HTTP/1.1 404失败
当Charles正在运行时,当您命中此端点时,您的响应将返回404错误。
您还可以在Charles中使用另一个名为"map remote“的选项,并构建一个完整的模拟服务器,它可以根据您的需要处理调用和响应。这可能不是你想要的,但这是一个可以帮助别人的选择,也是我自己使用的选择。
https://stackoverflow.com/questions/33011896
复制相似问题