Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用自定义值创建CLPlacemark以进行测试_Ios_Swift_Core Location_Clplacemark - Fatal编程技术网

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

Ios 使用自定义值创建CLPlacemark以进行测试,ios,swift,core-location,clplacemark,Ios,Swift,Core Location,Clplacemark,我有一个移动CLPlacemark对象并使用它们的应用程序,我想对与它们交互的几个组件进行单元测试。要做到这一点,我希望能够使用生成具有已知值的mockCLPlacemarks的方法从MapKit中剔除对真实反向地理定位的调用 id userDefaultsMock = OCMClassMock([CLPlacemark class]); // set it up to return a specific value when stringForKey: is called OCMStub([

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

id userDefaultsMock = OCMClassMock([CLPlacemark class]);

// set it up to return a specific value when stringForKey: is called
OCMStub([userDefaultsMock property]).andReturn(customValue);
CLPlacemark
只有一个初始值设定项(复制初始值设定项)。但在这本书中,它说:

Placemark对象通常由CLGeocoder对象生成,不过您也可以自己显式创建它们

但是,大多数成员都是只读的,所以我不知道如何创建一个具有自定义值的成员。是否可以在Swift中以这种方式设置内部属性?如果没有,您对上面引用的内容有什么想法吗?

我将使用OCMock()来删除创建stub-CLPlacemark对象的调用,并使用您自己的值删除它们的getter方法

id userDefaultsMock = OCMClassMock([CLPlacemark class]);

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

谢谢你的建议。我一直在避免使用OCMock,因为它是严格按照ObjcC设计的,但我敢打赌我可以找到自己的方法(即子类或其他东西)来清除属性获取程序。