如何模拟URLSession.DataTaskPublisher

提姆

我该如何嘲笑URLSession.DataTaskPublisher我有一堂课Proxy,需要注入一个URLSessionProtocol

protocol URLSessionProtocol {
    func loadData(from url: URL) -> URLSession.DataTaskPublisher
}
class Proxy {

    private let urlSession: URLSessionProtocol

    init(urlSession: URLSessionProtocol) {
        self.urlSession = urlSession
    }

    func get(url: URL) -> AnyPublisher<Data, ProxyError> {
        // Using urlSession.loadData(from: url)
    }

}

此代码最初URLSession与完成处理程序的传统版本一起使用。这很完美,因为我可以轻松地URLSession像Sundell的解决方案那样进行测试模拟在Swift中进行模拟

合并框架是否可以这样做?

吉尔·伯曼

与注入AURLSessionProtocol来模拟具体会话的方式相同,也可以注入Mocked Publisher例如:

let mockPublisher = Just(MockData()).eraseToAnyPublisher()

但是,根据您对此发布者的处理方式,您可能必须解决与Combine async发布者的某些怪异之处,请参阅此帖子以获取更多讨论:

为什么Combine的receive(on :)运算符会包含错误?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查URLSession.dataTaskPublisher的当前进度?

如何使用UrlSession.DataTaskPublisher调用发布Web服务?

从“ URLSession.dataTaskPublisher”接收任务进度

URLSession.shared.dataTask与dataTaskPublisher,什么时候使用?

将URLSession.DataTaskPublisher转换为Future发布者

Swift 组合从 URLSession.shared.dataTaskPublisher 返回 Int

为什么URLSession.DataTaskPublisher不会发布值?

URLSession.shared.dataTaskPublisher - 如何将接收到的值转换为字符串?

错误后如何继续 URLSession dataTaskPublisher 或其他发布者?

如何将URLSession.DataTaskPublisher请求排队,以便一次只创建一个?

UIKit 中的 Swift 組合。某些用戶的 URLSession dataTaskPublisher NSURLErrorDomain -1

将'[Publishers.Map <URLSession.DataTaskPublisher,[ProductRep]?>]'转换为[ProductRep]

如何模拟URLSession?

使用dataTaskPublisher进行Swift API调用

使用模拟数据测试URLSession委托

如何验证urlsession中的代理?

如何模拟几个获取模拟?

如何模拟模拟的find()的toArray()?

如何在URLSession中调用completionBlock

如何在Swift中存根URLSession?

如何从 SwiftUI 中的 URLSession 获取响应

如何清除URLSession / URLConfiguration存储的缓存数据?

如何使用URLSession从URL获取JSON数据?

Swift:URLSession.shared.downloadTask 仅在模拟器中工作

如何模拟Task <>结果?

Django,如何模拟注释?

JAVA:如何模拟并发

如何模拟依赖 CTE

如何模拟延迟?