使用自定义值创建 CLPlacemark 以进行测试
Creating CLPlacemark with custom values for testing
我有一个可以移动 CLPlacemark
对象并使用它们的应用程序,我想对与它们交互的几个组件进行单元测试。为此,我希望能够使用生成具有已知值的模拟 CLPlacemark
s 的方法从 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);
我有一个可以移动 CLPlacemark
对象并使用它们的应用程序,我想对与它们交互的几个组件进行单元测试。为此,我希望能够使用生成具有已知值的模拟 CLPlacemark
s 的方法从 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);