Mock API请求Xcode 7 Swift自动UI测试

时间:2015-10-08 09:34:10

标签: ios swift xcode7 ui-testing xcode-ui-testing

在Swift 2.0中编写自动UI测试时,有没有办法模拟请求。据我所知,UI测试应该独立于其他功能。有没有办法模拟服务器请求的响应,以便测试依赖于响应的UI行为。例如,如果服务器已关闭,则UI测试仍应运行。快速示例,对于登录,如果密码失败则模拟,然后UI应显示警报,但是,如果登录成功,则应显示下一页。

2 个答案:

答案 0 :(得分: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。它将指导您完成启动和运行所需的所有步骤。

答案 1 :(得分:0)

如果您担心模拟因任何原因进入生产环境的想法,您可以考虑使用第三方解决方案,如Charles Proxy

使用地图本地工具,您可以将来自特定端点的呼叫路由到计算机上的本地文件。您可以在本地文件中包含纯文本,其中包含您希望它返回的响应。根据你的例子:

您的登录信息点击端点yoursite.com/login

在Charles中你使用map本地工具你可以将命中该端点的调用路由到保存在你计算机上的文件,即mappedlocal.txt

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

当Charles正在运行并且您点击此终点时,您的响应将返回404错误。

您还可以在Charles中使用另一个选项" map remote"并构建一个完整的模拟服务器,可以根据需要处理调用和响应。这可能不是您正在寻找的,但它可以帮助其他人,也可以帮助他人。