首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中保存HTTP请求

在Swift中保存HTTP请求
EN

Stack Overflow用户
提问于 2015-02-26 17:16:10
回答 1查看 2.4K关注 0票数 2

我正在为一个iOS应用程序使用Swift,并使用Alamofire来执行HTTP请求。

我想编写单元测试来覆盖我的功能,但是我在处理由Alamofire执行的HTTP请求时遇到了困难。我正在使用Nocilla (导入桥接标头)来尝试存根我的HTTP请求,但是在测试中似乎永远无法实现对我的HTTP请求的回调。

我想知道是否有人曾经在测试套件中成功地处理过针对Alamofire的HTTP请求?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 17:46:09

没有,但这是我用于单元测试HTTP请求的通用模式(特别是调用REST )。我已经成功地将它用于阿拉莫火和AFNetworking。

  1. 我通常有一个“包装”类(我们称之为Service)底层网络API (Alamofire,AFNetworking,或者仅仅是纯iOS API)。Service通常是无状态的,负责对我的应用程序进行“更好”的调用。
  2. 对我来说,Service通常与我试图使用的REST密切相关。例如,如果我使用REST,允许我发布到Person集合,那么我就会有一个API,比如Service.PostPersonService.GetPerson等等。
  3. 我的应用程序类(通常是控制器)使用Service并通常使用inversion of control创建Service
  4. 在我的单元测试中,我提供了一个UnitTestService,以便我的类最终使用UnitTestService实例而不是Service实例。
  5. 为了简单起见,我的UnitTestService通常根据配置返回硬编码的JSON响应。因此,在上面的示例中,我将为Service.PostPerson提供一个硬编码的JSON响应。

我使用了许多技巧来完成这个任务:

  • 有一个协议ServiceProtocolServiceUnitTestService都实现了
  • 使用一组闭包实例化单个Service。这些闭包完成了真正的工作,您可以提供不同的闭包,这取决于您是连接到Internet还是模拟它。

因为我有一些函数式编程背景,所以我喜欢后者。但这两种技术都有效。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28748677

复制
相关文章

相似问题

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