Dejavu

用于 Swift 网络请求的模拟 (Mocking)

使用 Dejavu 在 Swift 测试中模拟网络请求,使其更快、更可靠。首先使用 Dejavu 记录网络活动。之后,Dejavu 可以回放原始网络请求,就像第一次运行一样。Dejavu 将请求和响应存储在 sqlite 数据库中。

Dejavu 用于帮助测试 ArcGIS Maps SDK for Swift 及其相关的 Toolkit

示例

一个模拟网络测试的完整示例可以在这里找到。

使用说明

一次性设置

配置一个位置来存储模拟数据。详细说明可以在这里找到。

使用概述

1. 准备网络拦截和观察

Dejavu 可以配置为使用自定义的网络拦截器和观察器。这些可以在创建 DejavuConfiguration 时指定。但是,您可以选择使用默认值。默认值使用 URLProtocol,这确实需要设置,特别是要告诉您正在使用的 URLSession 要使用哪些 URLProtocol 类。使用

为此,您需要为拦截器和观察器设置 URL 协议注册和取消注册处理程序。 这是一个如何连接它的例子

// Set the protocol registration handler.
Dejavu.setURLProtocolRegistrationHandler { [weak self] protocolClass in
    guard let self else { return }
    let config = URLSessionConfiguration.default
    config.protocolClasses = [protocolClass]
    self.session = URLSession(configuration: config)
}

// Set the protocol unregistration handler.
Dejavu.setURLProtocolUnregistrationHandler { [weak self] protocolClass in
    self?.session = URLSession(configuration: .default)
}

2. 记录网络请求

let config = DejavuConfiguration(fileURL: URL, mode: .cleanRecord)
Dejavu.startSession(configuration: config)

3. 回放网络请求

let config = DejavuConfiguration(fileURL: URL, mode: .playback)
Dejavu.startSession(configuration: config)

4. 结束会话

Dejavu.endSession()

5. 探索其他模式

Dejavu 有 4 种模式

要求

问题

发现错误或想要请求新功能? 请通过提交 issue 告诉我们。

贡献

Esri 欢迎任何人的贡献。 请参阅我们的贡献指南

许可

版权所有 2023 Esri

根据 Apache License, Version 2.0(“许可证”)获得许可;除非符合许可证的规定,否则您不得使用此文件。 您可以在以下网址获取许可证的副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或以书面形式达成协议,否则根据“按原样” BASIS 分发的软件,不附带任何形式的担保或条件,无论是明示的还是暗示的。 请参阅许可证,以了解有关权限和限制的特定语言。

许可证的副本位于存储库的LICENSE.txt文件中。