为高效测试提供 2 个功能的工具
- 输出两个任意类型之间的差异
- 为任意类型提供 Equatable 的默认实现
平台 | 状态 |
---|---|
macOS | |
Linux |
使用
diff<T>(between: T, and: T)
import MirrorDiffKit
// Input 2 structs or classes implements Equatable:
let a = Example(
key1: "I'm not changed",
key2: "I'm deleted"
)
let b = Example(
key1: "I'm not changed",
key2: "I'm inserted"
)
XCTAssertEqual(a, b, diff(between: a, and: b))
// XCTAssertEqual failed: ("Example(key1: "I\'m not changed", key2: "I\'m deleted")") is not equal to ("Example(key1: "I\'m not changed", key2: "I\'m inserted")") -
// struct Example {
// key1: "I'm not changed"
// - key2: "I'm deleted"
// + key2: "I'm inserted"
// }
Any =~ Any
和 Any !~ Any
import MirrorDiffKit
a = NotEquatable(
key1: "I'm not changed",
key2: "I'm deleted"
)
b = NotEquatable(
key1: "I'm not changed",
key2: "I'm inserted"
)
XCTAssert(a =~ b, diff(between: a, and: b))
// XCTAssertTrue failed -
// struct NotEquatable {
// key1: "I'm not changed"
// - key2: "I'm deleted"
// + key2: "I'm inserted"
// }
安装
Swift 包管理器
将以下行添加到您的 Package.swift
.package(url: "https://github.com/Kuniwak/MirrorDiffKit.git")
Carthage
将以下行添加到您的 Cartfile
github "Kuniwak/MirrorDiffKit"
CocoaPods
pod "MirrorDiffKit"