gpt4 book ai didi

ios - 如何模拟 URLSession.DataTaskPublisher

转载 作者:行者123 更新时间:2023-11-28 20:48:57 24 4
gpt4 key购买 nike

如何模拟 URLSession.DataTaskPublisher?我有一个类 Proxy 需要注入(inject)一个 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 的解决方案一样进行测试:Mocking in Swift .

是否可以使用 Combine Framework 做同样的事情?

最佳答案

就像您可以注入(inject) URLSessionProtocol 来模拟具体 session 一样,您也可以注入(inject)模拟的 Publisher。例如:

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

但是,根据您对该发布者所做的操作,您可能必须解决 Combine 异步发布者的一些奇怪问题,请参阅此帖子以获取更多讨论:

Why does Combine's receive(on:) operator swallow errors?

关于ios - 如何模拟 URLSession.DataTaskPublisher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com