首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCTests和PHPhotoLibrary

XCTests和PHPhotoLibrary
EN

Stack Overflow用户
提问于 2017-07-04 10:02:58
回答 1查看 640关注 0票数 1

我有功能,在应用程序保存照片画廊。A我想知道如何测试这些代码:

代码语言:javascript
复制
func saveInPhotoGallery() {
    guard self.cameraOutput != nil else { return }
    if self.cameraOutput is UIImage {
        PHPhotoLibrary.shared().performChanges({
            PHAssetChangeRequest.creationRequestForAsset(from: (self.cameraOutput as? UIImage)!)
        }, completionHandler: { (saved, error) in
            guard error == nil else {
               self.unsucessfullSavingOperation(error)
               return
            }
        })
    }
}

现在假设我想在我的案例场景中测试self.cameraOutputUIImage以及某事物出了问题,而completionHandler中有一个错误,所以我最终使用了self.unsucessfullSavingOperation(error)方法。当然,这有单独的测试,但我想介绍的是:

确保当在相机卷中插入图像出现问题时,我最终会调用此方法

当我试图在测试目标中调用saveInPhotoGallery()时,它会产生警报,即这需要访问您的照片库(doh!)。但是有一种方法可以在单元测试中跳过此警报,或者检查弹出并按允许的人?(就像我说的,对于这个测试,让我们假设我有这个权限)

还是有办法嘲弄这种行为?

EN

回答 1

Stack Overflow用户

发布于 2017-07-12 03:10:37

是的,我会嘲笑PHPhotoLibrary。您需要替换的主要内容是使用PHPhotoLibrary.shared(),它创建了一个具体实例的依赖关系。相反,我们可以依赖于抽象,即协议。

然后,生产代码可以提供PHPhotoLibrary.shared()作为实例使用。测试代码可以提供模拟对象。

如果需要更详细地说明是否需要打破依赖关系,或者创建模拟对象,或者两者兼而有之,请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44902889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档