- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何模拟 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 异步发布者的一些奇怪问题,请参阅此帖子以获取更多讨论:
关于ios - 如何模拟 URLSession.DataTaskPublisher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521928/
如何模拟 URLSession.DataTaskPublisher?我有一个类 Proxy 需要注入(inject)一个 URLSessionProtocol protocol URLSessionP
在下面的代码中,应用程序对象数组用于创建发布者数组,这些发布者数组被合并到发布对象数组中。 apps.map { latestRelease(app: $0) }.merge() 这是最新版本的完成方
在 Xcode 11 beta 5 或 6 中,我现有的代码依赖于 URLSession.DataTaskPublisher停止工作。好像DataTaskPublisher从不发布任何值,但我不知道为
之前 URLSession.shared.dataTask(for request: URLRequest) { data, error, response in ... } data 字段以及其他字
我想从 REST API 获取数据,为此,我需要先获取 ID 数组 - 第一次调用。之后,我需要使用每个 ID 进行 API 调用。我不想使用 completionHandlers,而是使用 Comb
我最近遇到了两个数据获取(下载)API,它们对我来说似乎是一样的。我不知道什么时候应该使用一个而不是另一个。 我可以用 URLSession.shared.dataTask var tasks
如何转换 URLSession.DataTaskPublisher至 Future在组合框架中。 在我看来, Future 发布者在这里更合适,因为调用只能发出一个响应并最终失败。 在 RxSwift
我有一个简单的问题,我只能在documentation中看到dataTaskPublisher我可以通过它调用 get web 服务,但是如何调用可以返回发布者的 post web 服务呢? 最佳答案
我正在努力从 URLSession 的 ApiErrorResponse 形成一个强类型错误对象(我下面示例中的 .dataTaskPublisher(for:) 对象)出版商,但找不到线索。在这里,
尝试发出网络请求时,出现错误 finished with error [-999] Error Domain=NSURLErrorDomain Code=-999 "cancelled" 如果我使用
尝试发出网络请求时,出现错误 finished with error [-999] Error Domain=NSURLErrorDomain Code=-999 "cancelled" 如果我使用
将我们的 API 客户端切换到组合后,我们开始收到用户关于错误“操作无法完成 (NSURLErrorDomain -1.)”的报告,即 error.localizedDescription从我们的 A
我是一名优秀的程序员,十分优秀!