模拟CLLocationManager(swift)进行测试

时间:2015-01-28 13:28:53

标签: objective-c unit-testing swift mocking core-location

问题1

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

问题2

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

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

  • 中运行
  • 扩展CLLocationManager并覆盖我想要的所有呼叫" muck"以

  • 我还没想过第三种选择吗?

大多数情况下,我想知道如果没有任何可用的东西,每种方法的优点是什么?

[编辑]

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

驱动CLLocationManager

1 个答案:

答案 0 :(得分:5)

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

该类名为DataManager,我创建了一个广义LocationMessage类型(可以使用CLLocation转换为msg.asCLLocation

这个巨型框架的一部分允许记录数据和文件回放,我们可以从

开车
  • CoreLocation
  • Xplane 插件
  • UDP Streams
  • 录制的文件
  • 外部GPS传感器

基本上答案是:

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