Swift:与核心蓝牙交互的单元测试代码

时间:2016-10-12 19:42:27

标签: ios unit-testing bluetooth swift2 core-bluetooth

我正在实施一个用 Swift 2.2 编写的iOS应用程序,该应用程序与蓝牙设备(CBPeripheral)进行交互。我有一个类BLEManager,它充当与CBCentralManager实例交互的接口。它提供了类似的方法:

func startScanning() {    
   cbCentralManagerInstance.scanForPeripheralsWithServices()
}

func disconnect() {
   cbCentralManagerInstance.cancelPeripheralConnection()
}

以及它实现CBCentralManagerDelegate方法作为扩展名:

func centralManager(:didDiscoverPeripheral)
func centralManager(:didConnectPeripheral)
func centralManager(:didDisconnectPeripheral)
func centralManagerDidUpdateState(:)

如何以这样的方式测试BLEManager,以便测试调用CBCentralManagerDelegate方法并验证行为?

这个问题:

How does one unit test code that interacts with the Core Bluetooth APIs?

有人问过,并给出了一个简短的抽象答案,但我不知道在哪里或如何开始。答案提到验证代码与API的交互,但这会是什么样的?如果我需要一个真正的CBPeripheral实例作为依赖项,那么委托方法如何被触发?

我看了一遍,找到了例如:

  1. https://github.com/DeliciousRaspberryPi/MockFive/issues/1
  2. https://swifting.io/blog/2016/06/06/17-unit-test-all-the-things/
  3. http://markspanbroek.github.io/MockingInSwift/
  4. 但他们给出了简短的概述和简单的代码示例,以展示他们试图解释的一个问题,但这似乎不足以让我了解如何实现以及从何处开始。

    请帮助!!代码示例是首选的解释/答案。 :)

0 个答案:

没有答案