【问题标题】:Mock API Requests Xcode 7 Swift Automated UI Testing模拟 API 请求 Xcode 7 Swift 自动化 UI 测试
【发布时间】:2016-01-05 20:17:57
【问题描述】:

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

【问题讨论】:

  • 添加了一些更合适的标签。
  • 我认为@JoeMasilotti 是正确的。然而,在我的生产代码中包含模拟,我会有点紧张。
  • 您可能想查看 SBTUITestTunnel,它可以方便地将数据从测试代码动态注入到应用程序代码中。看我的回答here

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


【解决方案1】:

在其当前的实现中,这对于 UI 测试来说直接是不可能的。框架与代码直接连接的唯一接口是launch arguments/environment

您可以让应用在此上下文中查找特定键或值并切换某些功能。例如,如果设置了MOCK_REQUESTS 键,则在网络层中注入MockableHTTPClient 而不是真正的HTTPClient。我写了关于setting the parameters 的文章,NSHipster 有一篇关于how to read them 的文章。

虽然不理想,但技术上可以通过一些跑腿来完成您正在寻找的东西。

这是我整理的tutorial on stubbing network data for UI Testing。它会引导您完成启动和运行所需的所有步骤。

【讨论】:

    【解决方案2】:

    如果您出于任何原因担心将 mock 放入生产环境的想法,您可以考虑使用第 3 方解决方案,例如 Charles Proxy

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

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

    在 Charles 中,您使用地图本地工具可以将到达该端点的呼叫路由到保存在您计算机上的文件,即 mappedlocal.txt

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-20
      • 2023-03-18
      • 1970-01-01
      • 2015-12-27
      • 2016-08-14
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多