I am working in an iOS application called ConnectApp
and I am using a framework called Connector
. Now, Connector
framework completes actual connection task with BLE devices and let my caller app (i.e. ConnectApp
) know the connection request results through ConnectionDelegate
. Let's see example code,
ConnectApp - host app
class ConnectionService: ConnectionDelegate {
func connect(){
var connector = Connector()
connector.setDelegate(self)
connector.connect()
}
func onConnected(result: ConnectionResult) {
//connection result
}
}
Connector Framework
public class ConnectionResult {
// many complicated custom variables
}
public protocol ConnectionDelegate {
func onConnected(result: ConnectionResult)
}
public class Connector {
var delegate: ConnectionDelegate?
func setDelegate(delegate: ConnectionDelegate) {
self.delegate = delegate
}
func connect() {
//…..
// result = prepared from framework
delegate?.onConnected(result)
}
}
Problem
Sometimes developers have no BLE device and we need to mock the Connector layer of framework. In case of simple classes (i.e. with simpler methods) we could have used inheritance and mock the Connector
with a MockConnector
which might override the lower tasks and return status from MockConnector
class. But when I need to deal with a ConnectionDelegate
which returns complicated object. How can I resolve this issue?
Note that framework does not provide interfaces of the classes rather we need to find way around for concrete objects like, Connector
, ConnectionDelegate
etc.
Aucun commentaire:
Enregistrer un commentaire