Mockery 0.7.0

Mockery 0.7.0

Daniel Saidi 维护。



Mockery 0.7.0

  • GitHub 仓库
  • CocoaPods.org 上的页面

Mockery

Mockery Logo
Version Swift 5.0 License Twitter: @danielsaidi

About Mockery

Mockery 是一个 Swift 编程语言的模拟库。Mockery 允许您注册函数结果,调用方法并检查调用。

protocol MyProtocol {
    func doStuff(int: Int, string: String) -> String
}

class MyMock: Mock, MyProtocol {

    lazy var doStuffRef = MockReference(doStuff)  // This has to be lazy

    func doStuff(int: Int, string: String) -> String {
        invoke(doStuffRef, args: (int, string))
    }
}

let mock = MyMock()
mock.registerResult(for: mock.doStuffRef) { args in String(args.1.reversed()) }
let result = mock.doStuff(int: 42, string: "string")    // => "gnirts"
let inv = mock.invokations(of: mock.doStuffRef)         // => 1 item
inv[0].arguments.0                                      // => 42
inv[0].arguments.1                                      // => "message"
inv[0].result                                           // => "gnirts"
mock.hasInvoked(mock.doStuffRef)                        // => true
mock.hasInvoked(mock.doStuffRef, numberOfTimes: 1)      // => true
mock.hasInvoked(mock.doStuffRef, numberOfTimes: 2)      // => false

Mockery 支持

  • 模拟协议
  • 模拟类(使用 [Mockable][Mockable])
  • 模拟同步和异步函数。
  • 模拟非返回值和返回值的函数。
  • 支持 void, optionalnon-optional 返回值。
  • 基于参数的,可变的结果值。

Mockery 不会对你的代码施加任何约束,也不需要在任何特定的结构中编写代码。只需在需要模拟协议时创建一个模拟即可。

更多信息,请查看这个 详细示例

安装

Swift Package Manager

https://github.com/danielsaidi/Mockery.git

CocoaPods

pod 'Mockery'

示例 App

此仓库包含一个示例应用程序,展示了如何使用Mockery。要运行它,只需打开并运行MockeryDemo.xcodeproj

联系我

如果您有任何问题或想要以任何方式做出贡献,请随意联系。

致谢

Mockery受到了Stubber的启发,没有它Mockery不可能实现。然而,Stubber使用全局函数,这要求您时不时地重置全局状态。Mockery将这部分逻辑移动到每个模拟中,这意味着任何已记录的执行都会在模拟被丢弃时自动重置。Mockery还添加了一些额外的功能,例如支持可选和空的结果,以及方便的检查工具。

许可

Mockery遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。