TestableAlert 1.0.5

TestableAlert 1.0.5

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布日期最近发布2015年11月
SPM支持SPM

Evgenii Neumerzhitckii维护。



  • 作者
  • Evgenii Neumerzhitckii

用于在iOS / Swift中简化单元测试的UIAlertController包装器

这是一个用Swift编写的iOS库,它简化了测试UIAlertController警报的过程。库允许在单元测试中检查警报可见性和执行其操作。

以下是一个单元测试示例,用于测试显示具有“删除”和“关闭”两个操作的警报的删除按钮。

func testTapRemove() {
  viewController.didTapRemoveButton(UIButton())

  // Verify alert is presented
  XCTAssert(viewController.testableAlert!.visible)

  // Verify alert title
  XCTAssertEqual(viewController.testableAlert!.alert.title, "Do you want to remove this item?")

  // Verify the buttons
  XCTAssertEqual(viewController.testableAlert!.actions.count, 2)
  XCTAssertEqual(viewController.testableAlert!.actions[0].title, "Yes, remove this item")
  XCTAssertEqual(viewController.testableAlert!.actions[1].title, "Close")

  // Press "Remove" button
  viewController.testableAlert.simulateAction("Yes, remove this item")

  // Verify the item was removed
  XCTAssert(viewController.itemIsRemoved)
}

设置

您有三种方法可以将TestableAlert添加到项目中。

添加源(iOS 7+)

只需将TestableAlert.swift文件添加到您的Xcode项目中即可。

使用Carthage设置(iOS 8+)

github "marketplacer/TestableAlert" ~> 1.0添加到您的Cartfile,并运行carthage update

使用CocoaPods设置(iOS 8+)

如果您使用CocoaPods,请将此文本添加到您的Podfile并运行pod install

use_frameworks!
pod 'TestableAlert', '~> 1.0'

使用方法

如果您使用Carthage或CocoaPods设置方法,请将import TestableAlert添加到您的源代码中。

1) 在您想要显示警报的视图控制器中创建一个实例属性。

class ViewController: UIViewController {
  var testableAlert: TestableAlert?
  // ...
}

2) 在显示警报的代码中初始化一个UIAlertController对象,就像您通常所做的那样。

let alertController = UIAlertController(
  title: "Do you want to cancel this operation?", message: nil,
  preferredStyle: .ActionSheet)

3) 使用您刚刚创建的警报创建一个TestableAlert实例。

testableAlert = TestableAlert(alert: alertController)

4) 向测试警报实例添加操作。

testableAlert?.addAction("OK", style: .Destructive) { _ in
  // Do something
}

5) 在视图控制器中显示警报。

testableAlert?.present(self)

以下是视图控制器全文代码

import UIKit
import TestableAlert

class ViewController: UIViewController {

  var testableAlert: TestableAlert?

  func showAlert() {
    let alertController = UIAlertController(
      title: "Do you want to cancel this operation?", message: nil, preferredStyle: .ActionSheet)

    testableAlert = TestableAlert(alert: alertController)

    testableAlert?.addAction("OK", style: .Destructive) { _ in
      // Do something
    }

    testableAlert?.addAction("Cancel", style: .Cancel, handler: nil)

    testableAlert?.present(self)
  }
}

测试警报

以下是如何从您的视图控制器单元测试中验证警报并执行其操作的方法。

获取警报对象

在您的测试中,您可能会需要获取UIAlertController对象以验证其标题、消息、文本字段等。可以通过访问alert属性来完成。

testableAlert.alert

检查警报可见性

检查visible属性,以查看警报是否已被显示。

XCTAssert(testableAlert.visible)

根据标题执行操作

调用 simulateAction 方法来模拟一个操作。它将调用操作处理程序并关闭警告。

testableAlert.simulateAction("OK")

获取警告操作列表

使用 actions 属性以获取警告的 对象。

testableAlert.actions

许可证

TestableAlert 库是在 MIT 许可证 下发布的。