【问题标题】:Handling request for CLLocationManager authorization in an XCTest case在 XCTest 案例中处理对 CLLocationManager 授权的请求
【发布时间】:2016-01-13 22:40:01
【问题描述】:

我正在为一些使用核心位置的代码编写一些单元测试。我有一个函数可以根据它是否有权访问用户的位置来做不同的事情。

如果我要运行应用程序,授予它对位置的访问权限,然后运行测试,它将能够测试对位置的授权,如果我要重置模拟器然后进行测试,它能够测试它无法访问的部分。虽然这有点工作,但这是一个巨大的痛苦,而且绝对不是自动化的。特别是因为这些测试是由 CI 服务器运行的,所以我需要一个更好的解决方案。

那么,有没有办法从 XCTest 为 CLLocationManager 设置授权状态,甚至在系统提示符上点击允许访问?

【问题讨论】:

  • 我不认为有,除非你模拟对象。

标签: ios xcode swift unit-testing xctest


【解决方案1】:

创建一个与 CLLocationManager 交互的 Facade。使用某种形式的Dependency Injection 访问此外观。然后你的测试可以注入一个假的,让你模拟调用你的 Facade 的结果。 (您可能需要对每个 CLAuthorizationStatus 值进行单独测试。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2014-07-08
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多