【发布时间】:2014-11-19 23:54:44
【问题描述】:
我想对我的应用程序进行实时测试。为此,我需要更改 CLLocationManager 对象,它是我的测试函数上的 AppDelegate 的成员。
如何在不向应用程序目标添加交换功能的情况下将我的locationManager 属性对象交换为CLLocationManager 的模拟版本?
目标是将所有测试代码保留在测试目标上。如果 Swift 涵盖了 http://nshipster.com/xctestcase/ 上发布的所有模拟需求,我应该错过一些技巧,但是:
- 扩展无法访问用于存储
CLLocationManager的私有变量_locationManager,因为扩展是在目标测试中声明的,并且是另一个模块的一部分。 - 派生无法更改
AppDelegate,因为我无法更改已创建对象的类
【问题讨论】:
标签: unit-testing swift