关于 MockingKit
MockingKit 是一个基于 Swift 的模拟库,可以使模拟协议和类变得容易,例如在单元测试或模拟尚未实现的功能时。
MockingKit 允许您注册函数结果,调用函数和检查记录的调用。
MockingKit 对您的代码没有任何限制,也不需要您以任何方式进行结构化。您不需要进行任何设置或配置。只需创建一个模拟即可。
支持的平台
MockingKit 支持的版本有 iOS 13
、macOS 10.15
、tvOS 13
和 watchOS 6
。
安装
MockingKit 可以通过 Swift 包管理器安装
https://github.com/danielsaidi/MockingKit.git
或者通过 CocoaPods
pod MockingKit
您还可以克隆仓库并在本地构建库。
入门指南
简而言之,MockingKit 允许您模拟任何协议和类
protocol MyProtocol {
func doStuff(int: Int, string: String) -> String
}
class MyMock: Mock, MyProtocol {
// You have to define a lazy reference for each function you want to mock
lazy var doStuffRef = MockReference(doStuff)
// Functions must then call the reference to be recorded
func doStuff(int: Int, string: String) -> String {
call(doStuffRef, args: (int, string))
}
}
然后您可以使用模拟来注册函数结果、调用函数和检查记录的调用。
// Create a mock
let mock = MyMock()
// Register a doStuff result
mock.registerResult(for: mock.doStuffRef) { args in String(args.1.reversed()) }
// Calling doStuff will now return the pre-registered result
let result = mock.doStuff(int: 42, string: "string") // => "gnirts"
// You can now inspect calls made to doStuff
let calls = mock.calls(to: mock.doStuffRef) // => 1 item
calls[0].arguments.0 // => 42
calls[0].arguments.1 // => "string"
calls[0].result // => "gnirts"
mock.hasCalled(\.doStuffRef) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes: 1) // => true
mock.hasCalled(\.doStuffRef, numberOfTimes: 2) // => false
在线文档包含一个更详尽的入门指南,它将帮助你开始使用这个库。
文档
在线文档包含文章、代码示例等,可以帮助您概述库的各个部分。
当前在线文档仅针对iOS。要为其他平台生成文档,请打开Xcode中的项目,选择一个模拟器,然后运行“产品/构建文档”。
演示应用
本项目包含一个演示应用程序,可以让您在iOS和macOS上探索MockingKit。要运行,只需打开并运行 Demo/Demo.xcodeproj
。
支持
您可以在GitHub Sponsors赞助此项目或联系以获得付费支持。
联系
如果您有任何疑问或想以任何方式做出贡献,随时联系我们。
- 电子邮件:[email protected]
- Twitter: @danielsaidi
- 网站: danielsaidi.com
许可
MockingKit遵循MIT许可协议。更多信息请参阅LICENSE文件。