用于测试的模拟 CLLocationManager (swift)
Posted
技术标签:
【中文标题】用于测试的模拟 CLLocationManager (swift)【英文标题】:Mock CLLocationManager (swift) for Testing 【发布时间】:2015-01-28 13:28:53 【问题描述】:问题 1
在我真正开始自己编写东西之前,是否存在将 CLLocationManager 包装到模拟框架中的现有框架(obj-c 或 swift)?
问题 2
制作模拟位置管理器的最佳方法是什么?
创建一个围绕 CLLocationManager 的类,对该类的任何调用都将返回测试数据或实际的 CLLocation 数据,具体取决于我们运行的“模式”
扩展 CLLocationManager 并覆盖所有我想“搞砸”的调用
有没有我没想到的第三个选项?
我主要想知道假设没有任何可用的东西,每种方法的优点/缺点是什么
[编辑]
虽然 XCode 中有一个模拟位置功能,但它并不能完全满足我的需求。如果我没记错的话,它不做标题,它们必须被插值。此外,我最终可能会修改这个类以从飞行模拟器驱动 CLLocationManager
【问题讨论】:
为什么不在 Xcode 或/和 ios 模拟器中使用“模拟位置”功能? 我需要比模拟位置功能提供的更多功能(例如无法模拟标题) 必须用 Swift 编写吗? github上有几个CL模拟器如this one “模拟位置”不适用于测试。您是如何找到解决方案的? 【参考方案1】:所以我想我会重新审视这个问题。我最终做的是编写一个完整的框架来处理相关应用程序的位置(和其他数据)。我们正在使用外部 GPS 传感器。
这个类叫做DataManager
,我创建了一个通用的LocationMessage
类型(可以用msg.asCLLocation
转换成CLLocation
)。
这个大型框架的一部分允许记录数据和文件播放,我们可以从
CoreLocation
Xplane 插件
UDP 流
录制的文件
外部 GPS 传感器
所以基本上答案是:
创建一个封装 CLLocationManager 的类,对该类的任何调用都将返回测试数据或实际 CLLocation 数据,具体取决于我们运行的“模式”
【讨论】:
以上是关于用于测试的模拟 CLLocationManager (swift)的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 模拟器上的 CLLocationManager 因 kCLErrorDomain Code=0 而失败
CLLocationManager startMonitoringVisits在模拟器中不起作用