Tim*_*Tim 5 mocking ios swift urlsession combine
我该如何嘲笑URLSession.DataTaskPublisher?我有一堂课Proxy需要注入URLSessionProtocol
protocol URLSessionProtocol {
func loadData(from url: URL) -> URLSession.DataTaskPublisher
}
Run Code Online (Sandbox Code Playgroud)
class Proxy {
private let urlSession: URLSessionProtocol
init(urlSession: URLSessionProtocol) {
self.urlSession = urlSession
}
func get(url: URL) -> AnyPublisher<Data, ProxyError> {
// Using urlSession.loadData(from: url)
}
}
Run Code Online (Sandbox Code Playgroud)
URLSession该代码最初与完成处理程序的传统版本一起使用。它非常完美,因为我可以轻松地模拟URLSession测试,就像 Sundell 的解决方案:Mocking in Swift。
是否可以使用组合框架做同样的事情?
就像您可以注入 aURLSessionProtocol来模拟具体会话一样,您也可以注入模拟的Publisher. 例如:
let mockPublisher = Just(MockData()).eraseToAnyPublisher()
Run Code Online (Sandbox Code Playgroud)
但是,根据您对此发布者的操作,您可能需要解决组合异步发布者的一些奇怪问题,请参阅此文章以获取更多讨论:
为什么Combine 的 receive(on:) 运算符会吞下错误?
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |