MockingKit 1.3.0

MockingKit 1.3.0

Daniel Saidi 维护。



  • 作者:)
  • Daniel Saidi

MockingKit Logo

Version Swift 5.6 MIT License Twitter: @danielsaidi

关于 MockingKit

MockingKit 是一个基于 Swift 的模拟库,可以使模拟协议和类变得容易,例如在单元测试或模拟尚未实现的功能时。

MockingKit 允许您注册函数结果,调用函数和检查记录的调用。

MockingKit 对您的代码没有任何限制,也不需要您以任何方式进行结构化。您不需要进行任何设置或配置。只需创建一个模拟即可。

支持的平台

MockingKit 支持的版本有 iOS 13macOS 10.15tvOS 13watchOS 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赞助此项目或联系以获得付费支持。

联系

如果您有任何疑问或想以任何方式做出贡献,随时联系我们。

许可

MockingKit遵循MIT许可协议。更多信息请参阅LICENSE文件。