ios - 使用自定义值创建 CLPlacemark 以进行测试

标签 ios swift core-location clplacemark

我有一个移动 CLPlacemark 对象并使用它们的应用程序,我想对与它们交互的几个组件进行单元测试。为此,我希望能够使用生成具有已知值的模拟 CLPlacemark 的方法来阻止 MapKit 对真正的反向地理定位的调用。

CLPlacemark 只有一个初始化器(复制初始化器)。但是在documentation ,它说:

Placemark objects are typically generated by a CLGeocoder object, although you can also create them explicitly yourself.

但是,大多数成员都是只读的,因此我不确定如何创建具有自定义值的成员。是否可以在 Swift 中以这种方式设置内部属性?如果不是,关于它们在上述引文中的含义有什么想法吗?

最佳答案

我会使用 OCMock ( http://ocmock.org ) 来 stub 调用以创建 stub CLPlacemark 对象,并用您自己的值 stub 它们的 getter 方法。

id userDefaultsMock = OCMClassMock([CLPlacemark class]);

// set it up to return a specific value when stringForKey: is called
OCMStub([userDefaultsMock property]).andReturn(customValue);

关于ios - 使用自定义值创建 CLPlacemark 以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609611/

相关文章:

ios - 无法使用带有 NSLocationWhenInUseUsageDescription 的 Swift 和 iOS8 获取位置服务

ios - 关闭蓝牙时没有触发 didExitRegion

ios - 从 UICollectionViewCell 使用 UICollectionView

ios - 在 CloudKit 中将记录从开发转移到生产?

使用 MPMoviePlayerViewController 播放视频前的 iOS 4.1 黑屏

arrays - 如何从数组中选择项目不重复

ios - accessoryButtonTappedForRowWithIndexPath 不适用于自定义按钮或标签

swift - 如何使 `NSPredicate`在搜索中忽略某些字符

ios - TapGesture 在 tabBar 下不起作用

ios - 作为自己的委托(delegate)的类是否遵循 iOS 约定?