我无法覆盖CLLocationManager的location属性.有关如何做到这一点的任何想法?
如果我做:
class MockCLLocationManager: CLLocationManager {
var location {
get {
return CLLocation(latitude: 0, longitude: 0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误: '@objc' getter for non-'@objc' property
谢谢.
Tom*_*out 10
这可能是一个迟到的答案,但因为我也在寻找相同的东西,它是:
你会用相反的方法吗?首先声明一个在实际CLLocationManager的情况下将使用的协议
protocol LocationManager{
var location:CLLocation? {get}
}
Run Code Online (Sandbox Code Playgroud)
并使CLLocationManager符合它
extension CLLocationManager:LocationManager{}
Run Code Online (Sandbox Code Playgroud)
这样您可以在测试中模拟位置管理器,如下所示:
class MockLocationManager:LocationManager{
var location:CLLocation? = CLLocation(latitude: 55.213448, longitude: 20.608194)
}
Run Code Online (Sandbox Code Playgroud)
但是也可以在生产代码中传递CLLocationManager而不是它.
在此处查看更多信息:http://blog.eliperkins.me/mocks-in-swift-via-protocols
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |