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

Creating CLPlacemark with custom values for testing

我有一个可以移动 CLPlacemark 对象并使用它们的应用程序,我想对与它们交互的几个组件进行单元测试。为此,我希望能够使用生成具有已知值的模拟 CLPlacemarks 的方法从 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) 来打断创建存根 CLPlacemark 对象的调用,并用您自己的值打断它们的 getter 方法。

id userDefaultsMock = OCMClassMock([CLPlacemark class]);

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