使用自定义值创建 CLPlacemark 以进行测试
Posted
技术标签:
【中文标题】使用自定义值创建 CLPlacemark 以进行测试【英文标题】:Creating CLPlacemark with custom values for testing 【发布时间】:2016-04-13 21:09:22 【问题描述】:我有一个应用程序可以移动CLPlacemark
对象并使用它们,我想对与它们交互的几个组件进行单元测试。为此,我希望能够使用生成具有已知值的模拟 CLPlacemark
s 的方法,将 MapKit 对真正反向地理定位的调用存根。
CLPlacemark
只有一个初始化器(复制初始化器)。但在documentation 中,它说:
地标对象通常由 CLGeocoder 对象生成,但您也可以自己显式创建它们。
但是,大多数成员都是只读的,所以我不确定如何使用自定义值创建一个。是否可以在 Swift 中以这种方式设置内部属性?如果不是,您对上述引文中的含义有何想法?
【问题讨论】:
【参考方案1】:我会使用 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);
【讨论】:
感谢您的建议。我一直在避免使用 OCMock,因为它是严格按照 ObjcC 设计的,但我敢打赌,我可以找到自己的方式(即子类或其他东西)来删除属性 getter。以上是关于使用自定义值创建 CLPlacemark 以进行测试的主要内容,如果未能解决你的问题,请参考以下文章
从人类可读的字符串创建 MKPlacemark/CLPlacemark
linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用