我正在尝试对付款模块进行单元测试,为此,我试图模拟SKProductsResponse并由此返回属性。
我从product属性开始,它运行良好。但是,当我尝试使用在运行时中断的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:]:此类与键值无效的键值编码兼容。”您知道为什么要使用这种方法吗? 谢谢!
答案 0 :(得分:0)
嗯,我仍然不知道发生了什么,但是我意识到我可以像这样覆盖“ invalidProductIdentifiers”的getter:
override var invalidProductIdentifiers: [String] {get{ return invalidIds}}
private var invalidIds:[String] = []
init(products:[SKProduct], invalidProducts:[String])
{
super.init()
invalidIds = invalidProducts
}
那很好。