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

时间:2016-04-13 21:09:22

标签: ios swift core-location clplacemark

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

CLPlacemark只有一个初始值设定项(复制初始值设定项)。但在documentation中,它说:

  

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

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

1 个答案:

答案 0 :(得分: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);