5

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

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

地标对象通常由 CLGeocoder 对象生成,尽管您也可以自己显式创建它们。

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

4

1 回答 1

0

我会使用 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);
于 2016-04-13T21:29:20.980 回答