我正在尝试模拟一个amazon服务对象来对相关代码执行UnitTesting。我已经按照以下方式完成了它,但每次初始化时它崩溃都会导致错误失败:
捕获“NSInternalInconsistencyException”,“
- init
无效 初始化
通常使用工厂方法创建相同的对象,因此初始化程序似乎是私有的或其他东西。如何嘲笑这样的对象?
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()
答案 0 :(得分:2)
您必须在AWSIoTDataManager
来电中调用init
的指定初始值设定项,然后移除override
装饰器。这就是你得到错误的原因。
你不能通过子类化来嘲笑它。使用Swift,通常通过共享协议提供模拟。为您在第三方库中使用的接口定义协议。使用您的协议在库上创建一个空的扩展(不应该有代码)。然后针对协议实现模拟对象,以便在测试中使用。