gpt4 book ai didi

ios - XCTest CLLocationManager 的委托(delegate)方法不会被调用

转载 作者:行者123 更新时间:2023-12-01 20:19:11 25 4
gpt4 key购买 nike

我正在为我的 iBeaconManager 编写测试用例。在我的 iBeaconManager 内部包含一个 CLLocationManager 实例,它的委托(delegate)设置为 iBeaconManager。我将一个 CLCircularRegions 数组传递给我的 iBeaconManager,为每个区域调用我的位置管理器的 [startMonitoringForRegion:] 方法。我的位置管理器的 [didStartMonitoringForRegion:] 由于某种原因没有被调用。我做错什么了?

最佳答案

您的测试电话 startMonitoringForRegion: .根据您的设置,这可能会也可能不会触发回调。但即使是这样,它也是异步的并且需要时间。测试在此发生之前完成并消失。

根据您的目标,尝试其中一种方法:

  • 端到端测试:让您的测试重新同步异步操作。如果您使用的是直接 XCTest,请创建一个已满足的 XCTestExpectation。其他附加测试库可以使同步更容易。 (我更喜欢 OCHamcrest 的 assertWithTimeout。)
  • 单元测试:不要使用实际的 CLLocationManager。相反,注入(inject)一个假的。然后您的测试可以直接调用 didStartMonitoringForRegion:就好像它已被 CLLocationManager 调用一样。这是测试来自任何框架的回调的常规方法。

  • 单元测试方法的优点包括速度、可靠性,并且您可以在模拟器上运行(因此它可以成为您持续集成的一部分)。此外,您可以模拟任意数量的条件,而无需创建这些条件。例如,很容易用错误或其他极端情况进行回调。

    关于ios - XCTest CLLocationManager 的委托(delegate)方法不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998282/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com