我该如何嘲笑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发布者的某些怪异之处,请参阅此帖子以获取更多讨论:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句