无法在SKProductsResponse模拟中设置invalidProductIdentifiers

时间:2019-06-11 18:17:27

标签: swift unit-testing

我正在尝试对付款模块进行单元测试,为此,我试图模拟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:]:此类与键值无效的键值编码兼容。”

您知道为什么要使用这种方法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,我仍然不知道发生了什么,但是我意识到我可以像这样覆盖“ invalidProductIdentifiers”的getter:

override var invalidProductIdentifiers: [String] {get{ return invalidIds}}
private var invalidIds:[String] = []
init(products:[SKProduct], invalidProducts:[String])
{
    super.init()
    invalidIds = invalidProducts
}

那很好。