我正在尝试对我的支付模块进行单元测试,为此,我正在尝试模拟SKProductsResponse和由此返回的属性。
我从产品属性开始,它运行良好。但是,当我使用在运行时中断的invalidProductIdentifiers尝试相同的操作时,这是代码
首先,我尝试通过扩展课程
class ProductsResponse:SKProductsResponse
{
init(products:[SKProduct], invalidProducts:[String])
{
super.init()
self.setValue(products, forKey: "products")
self.setValue(invalidProducts, forKey: "invalidProductIdentifiers")
}
}
然后通过扩展
extension SKProductsResponse
{
convenience init(products:[SKProduct], invalidProducts:[String]) {
self.init()
self.setValue(products, forKey: "products")
self.setValue(invalidProducts, forKey: "invalidProductIdentifiers")
}
}
两者都导致相同的问题,但仅适用于invalidProductIdentifiers->
“,捕获了” NSUnknownKeyException“,” [ProductsResponse setValue:forUndefinedKey:]:此类与键invalidProductIdentifiers的键值编码不兼容。“
您是否知道为什么要采用这种方法或对此方法有其他选择?
谢谢!
最佳答案
好吧,我仍然不知道发生了什么,但是我意识到我可以像这样简单地覆盖“ invalidProductIdentifiers”的getter:
override var invalidProductIdentifiers: [String] {get{ return invalidIds}}
private var invalidIds:[String] = []
init(products:[SKProduct], invalidProducts:[String])
{
super.init()
invalidIds = invalidProducts
}
那很好。
关于swift - 无法在SKProductsResponse模拟中设置invalidProductIdentifiers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56549606/