【问题标题】:Creating CLPlacemark with custom values for testing使用自定义值创建 CLPlacemark 以进行测试
【发布时间】:2016-04-13 21:09:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios swift core-location clplacemark


    【解决方案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。
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多