模拟CLLocationManager(swift)进行测试

Jee*_*eef 3 unit-testing mocking objective-c core-location swift

问题1

在我真正开始写一些东西之前,我是否有将CLLocationManager包装到模拟框架中的现有框架(obj-c或swift)?

问题2

制作模拟位置管理器的最佳方法是什么?

  • 创建一个包装CLLocationManager的类,对该类的任何调用都将返回测试数据或实际的CLLocation数据,具体取决于我们运行的"模式"

  • 扩展CLLocationManager并覆盖我想要"muck"的所有调用

  • 有没有我想到的第三种选择?

大多数情况下,我想知道每种方法的优点/缺点是假设没有任何可用的东西

[编辑]

虽然XCode中有一个模拟位置功能但它并不能完全满足我的需求.如果我没记错,它就不会标题,它们必须进行插值.此外,我可能最终修改此类以从飞行模拟器驱动CLLocationManager

Jee*_*eef 6

所以我想我会重温这个问题.我最终做的是编写一个完整的框架来处理相关应用程序的位置(和其他数据).我们正在使用外部GPS传感器.

调用该类DataManager,我创建了一个通用LocationMessage类型(可以转换为CLLocationwith msg.asCLLocation).

这个巨型框架的一部分允许记录数据和文件播放,我们可以从中驱动位置

  • CoreLocation
  • 一个Xplane插件
  • UDP流
  • 录制的文件
  • 外部GPS传感器

所以基本上答案是:

  • 创建一个包装CLLocationManager的类,对该类的任何调用都将返回测试数据或实际的CLLocation数据,具体取决于我们运行的"模式"