我该如何嘲笑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 中的模拟 https://www.swiftbysundell.com/articles/mocking-in-swift/.
是否可以使用组合框架做同样的事情?
以同样的方式,你可以注入URLSessionProtocol
要模拟具体会话,您还可以注入一个模拟的Publisher
。例如:
let mockPublisher = Just(MockData()).eraseToAnyPublisher()
但是,根据您对此发布者的操作,您可能需要解决组合异步发布者的一些奇怪问题,请参阅此文章以获取更多讨论:
为什么Combine 的 receive(on:) 运算符会吞下错误? https://stackoverflow.com/questions/58945952/why-does-combines-receiveon-operator-swallow-errors
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)