首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UITesting上存根网络请求

如何在UITesting上存根网络请求
EN

Stack Overflow用户
提问于 2017-04-04 22:41:50
回答 2查看 1.7K关注 0票数 1

有没有办法存根在Swift中编写的对UITests的网络请求?

我已经安装了OHHTTPStubs pod,但是无法通过使用它的方法来保存我的网络请求,这是因为UITest目标和应用程序目标是在不同的线程中执行的。

如果有任何建议我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-01-24 21:07:37

这里有两个不同的选项:

  1. 你可以采用奥列塔的方法,在你的应用程序代码中触摸网络。您必须将NSURLSession存根以注入所需的响应,并使用一些启动参数来确定何时使用已存根的会话,而不是常规会话。本文将详细介绍如何做到这一点:http://masilotti.com/ui-testing-stub-network-data/
  2. You可以运行本地服务器,并直接从测试代码注入数据。最大的好处是你根本不需要接触你的应用程序代码。您还可以在测试期间轻松地更改响应,这在第一个解决方案中是不可能的。

要运行本地服务器,您有几种选择。我使用的是Swifter,但也有其他选项:AmbassadorSBUITestTunnel

无论您选择哪种解决方案,一般流程如下:

将启动参数传递给UITests

  • Catch,以标识您正在运行

  • 中启动参数,并将您的application:didFinishLaunchingWithOptions:基URL切换到本地服务器之一:对您正在测试的

的URL进行http://localhost

  • Start您的server

  • Inject您的响应

您在this article for Swifter中有更详细的方法

票数 6
EN

Stack Overflow用户

发布于 2017-04-06 05:38:06

存根需要在被测应用程序的代码中完成,而不是在测试代码中。这是因为UI测试过程无法控制被测应用程序的网络,因为它们是相互独立的。

从测试中启动应用程序时发送启动参数,并读取应用程序中的启动参数以调用存根作为AppDelegateapplication:didFinishLaunchingWithOptions:的一部分。

代码语言:javascript
复制
let app = XCUIApplication()
app.launchArguments = ["stub"]
app.launch()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43210432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档