iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 有机会针对EKEventStore编写单元测试吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在@R_585_9616@程序中实现“同步到日历”功能.我们的同步过程涉及我们从服务器端获取的要复制到iPhone日历的事件.目前我不确定我们为此同步编写的方法是否解决了我们期望的所有可能情况,这就是我想要对其进行单元测试的原因.它包含许多对EKEventStore的调用,正如Apple文档所述,需要使用requestAccessToEntityType调用:completion:first:

……在我们运行单元测试的环境中很难处理.

目前我正在虑使用EKEvent对象的一些NSArray来实现EKEventStore的mock子类.

是否有可能对EKEventStore进行单元测试而不编写这样的模拟子类,它会模仿我们在同步例程中使用的所有方法

解决方法

最近我发现最终可以在Simulator中使用特殊的hack来做到这一点:有TCC.db数据库,其中存储了这个和其他一些访问权限.

我能够设置我的单元测试套件,以便在启动时,使用与EKAuthorizationStatusAuthorized对应的值修改TCC.db表.完成此更改后,可以使用对EKEventStore的完全访问权限编写所有后续测试.

首先,这里有一点解释:Grant access to NAB programatically on iOS 7.0 Simulator.

还有一个很好的项目JPSimulatorHacks,其中包含完成此hack的代码.它支持授予Calendar权限.

现在,我可以对我的Calendar Sync代码进行单元测试,而无需详尽地记录EK类.

重要细节:

无法访问TCC.db,至少当您的测试目标未指向Host Application中的实际应用程序时,我没有找到它.当我确实将Host Application设置为None时,我无法找到TCC.db并因此授予任何内容.这就是为什么目前我的单元测试目标我创建了人工应用程序MyAppNameTestsApp所以现在我将我的单元测试目标的主机应用程序设置为MyAppNameTestsApp.这给了我有效的应用程序与TCC.db,同时我不需要我在运行Cmd U时加载整个应用程序.

大佬总结

以上是大佬教程为你收集整理的ios – 有机会针对EKEventStore编写单元测试吗?全部内容,希望文章能够帮你解决ios – 有机会针对EKEventStore编写单元测试吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。