我正在尝试模拟亚马逊服务对象,以在相关代码上执行统计。我已经按照以下方式完成了此操作,但是每次启动时,它都会崩溃,错误失败:
捕获" nsinternalInconSistencyException","
- init
不是有效的 initializer
通常,使用那里的工厂方法将创建相同的对象,因此看来初始化器是私有的。如何模拟此类对象?
class MyAWSiOTDataManager : AWSIoTDataManager {
override func publishString(_ string: String, onTopic topic: String, qoS qos: AWSIoTMQTTQoS) -> Bool {
print("publish string called")
return true
}
override init() {
}
}
let manager = MyAWSiOTDataManager()
您必须在init
呼叫内拨打AWSIoTDataManager
的指定初始化器,然后卸下override
装饰器。这就是为什么您遇到错误的原因。
您无法通过分类来模拟某些东西。使用Swift,通常通过共享协议提供模拟。为您从第三方库中使用的接口定义协议。使用您的协议在库上创建一个空的扩展名(不需要代码)。然后针对测试中使用的协议实现模拟对象。