I wonder if there's a specific reason that @objc protocols are not supported?
/// @mockable(history: performRequest = true)
@objc public protocol SCCrashLoggerNetworkExecuting: NSObjectProtocol {
@objc func performRequest(
request: URLRequest,
reportId: String,
includeLogs: Bool,
onSuccess: @escaping () -> Void,
onPermanentFailure: @escaping (Error, String) -> Void
) -> String
}
Generated source:
import Foundation
public class SCCrashLoggerNetworkExecutingMock: SCCrashLoggerNetworkExecuting {
public init() { }
public private(set) var performRequestCallCount = 0
public var performRequestArgValues = [(URLRequest, String, Bool)]()
public var performRequestHandler: ((URLRequest, String, Bool, @escaping () -> Void, @escaping (Error, String) -> Void) -> (String))?
public func performRequest(request: URLRequest, reportId: String, includeLogs: Bool, onSuccess: @escaping () -> Void, onPermanentFailure: @escaping (Error, String) -> Void) -> String {
performRequestCallCount += 1
performRequestArgValues.append((request, reportId, includeLogs))
if let performRequestHandler = performRequestHandler {
return performRequestHandler(request, reportId, includeLogs, onSuccess, onPermanentFailure)
}
return ""
}
}
Expected source:
- Add
NSObject as super type.
- Remove public init, as
NSObject has a default initializer.
I wonder if there's a specific reason that
@objcprotocols are not supported?Generated source:
Expected source:
NSObjectas super type.NSObjecthas a default initializer.