Mockery
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
,optional
和non-optional
返回值。 - 基于参数的,可变的结果值。
Mockery 不会对你的代码施加任何约束,也不需要在任何特定的结构中编写代码。只需在需要模拟协议时创建一个模拟即可。
更多信息,请查看这个 详细示例。
安装
Swift Package Manager
https://github.com/danielsaidi/Mockery.git
CocoaPods
pod 'Mockery'
示例 App
此仓库包含一个示例应用程序,展示了如何使用Mockery。要运行它,只需打开并运行MockeryDemo.xcodeproj
。
联系我
如果您有任何问题或想要以任何方式做出贡献,请随意联系。
- 电子邮件:[email protected]
- Twitter:@danielsaidi
- 网站:danielsaidi.com
致谢
Mockery受到了Stubber的启发,没有它Mockery不可能实现。然而,Stubber使用全局函数,这要求您时不时地重置全局状态。Mockery将这部分逻辑移动到每个模拟中,这意味着任何已记录的执行都会在模拟被丢弃时自动重置。Mockery还添加了一些额外的功能,例如支持可选和空的结果,以及方便的检查工具。
许可
Mockery遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。