首页 > 解决方案 > 如何在CKError上设置partialErrorsByItemID的值进行测试?

问题描述

我想为处理 CloudKit 操作的类测试我的错误处理。我希望能够构造一个CKError带有特定部分错误的 a,这样我就可以将它传递到被测操作的完成块中。

CKError我可以使用代码初始化 a ,.partialError但由于partialErrorsByItemIDDictionary 是 get-only,我无法设置部分错误。

let error = CKError(.partialError)
error.partialErrorsByItemID = ["TestItemID": CKError(.zoneNotFound)] // => Cannot assign to property: 'partialErrorsByItemID' is a get-only property

有没有办法控制 的值partialErrorsByItemID

标签: iosswiftunit-testingcloudkitxctest

解决方案


您可以通过在DictionarypartialErrorsByItemID中提供相关的键/值对并使用初始化程序来分配值:userInfoinit(_:userInfo:)

let error = CKError(.partialFailure, userInfo: [
    CKPartialErrorsByItemIDKey: ["TestItemID": CKError(.zoneNotFound)]
])

推荐阅读