我将 Swift 用于 iOS 应用程序,并使用 Alamofire 执行 HTTP 请求。
我想编写单元测试来涵盖我的功能,但是我在对 Alamofire 执行的 HTTP 请求进行存根处理时遇到了麻烦。我正在使用 Nocilla(导入到桥接头中)来尝试对我的 HTTP 请求进行存根,但似乎在测试中从未达到对我的 HTTP 请求的回调。
我想知道是否有人有在他们的测试套件中成功地为 Alamofire 的 HTTP 请求存根的经验?
谢谢!
我将 Swift 用于 iOS 应用程序,并使用 Alamofire 执行 HTTP 请求。
我想编写单元测试来涵盖我的功能,但是我在对 Alamofire 执行的 HTTP 请求进行存根处理时遇到了麻烦。我正在使用 Nocilla(导入到桥接头中)来尝试对我的 HTTP 请求进行存根,但似乎在测试中从未达到对我的 HTTP 请求的回调。
我想知道是否有人有在他们的测试套件中成功地为 Alamofire 的 HTTP 请求存根的经验?
谢谢!
我没有,但这是我用于单元测试 HTTP 请求(专门调用 REST API)的一般模式。我已经成功地将它用于 Alamofire 和 AFNetworking。
Service
)底层网络 API(Alamofire、AFNetworking 或纯 iOS API)的类。Service
通常是无状态的,负责使我的应用程序的调用“更好”。Service
它通常与我尝试使用的 REST API 密切相关。例如,如果我使用允许我发布到Person
集合的 REST API,我将有一个类似Service.PostPerson
,Service.GetPerson
等的 API。Service
并且通常用于inversion of control
创建Service
.UnitTestService
,以便我的类最终使用一个实例UnitTestService
而不是一个实例Service
。UnitTestService
通常会根据配置返回硬编码的 JSON 响应。所以在上面的例子中,我会有一个硬编码的 JSON 响应Service.PostPerson
。我使用了多种技术来做到这一点:
ServiceProtocol
既能实现Service
又能UnitTestService
实现的协议Service
用一组闭包实例化的单个。这些闭包做真正的工作,你可以根据你是连接到互联网还是模拟它来提供不同的闭包。因为我有一些函数式编程背景,所以我喜欢后者。但两种技术都有效。