你该革新gomonkey的惯用法了

分享
源代码 2024-9-21 11:14:05 110 0 来自 中国
弁言

gomonkey 是笔者开源的一款 Go 语言 的打桩框架,目标是让用户在单元测试中低资本的完成打桩,从而将精神聚焦于业务功能的开发。gomonkey 接口友爱,功能强盛,现在已被许多项目利用,用户遍及天下多个国家。
近一年,在诸多用户的共同积极下,gomonkey 社区发展的很快,连续发布了 8 个版本,不光优化了一些底子特性,而且还新增了许多扩展特性,非常实用接地气。与此同时,gomonkey 的 star 数从 0.5k 跃升到了 1.1k,受到了国表里 gopher 的广泛赞赏和肯定。


gomonkey 新增或优化的紧张特性汇总:
特性分类贡献者备注全面支持 arm64 架构新增hengwu0PR55
PR58全面支持为 private method 打桩了新增hengwu0  
lockdown56PR65
PR67
PR85全面支持 386 架构新增segdumpingPR75支持为 method 打桩时不传入receiver优化AVOliliPR78支持为 func/func var/method 打桩时直接指定返回值新增AVOliliPR78支持为 method 打桩时不必转化为reflect.Type范例,同时兼容原有的用法优化AVOliliPR83支持为 method 打桩不传入receiver时函数可为变参优化punchioPR90感谢全部 gomonkey 的贡献者,每一个特性都凝聚着各人的心血和汗水。固然我们未曾见过,但相互心往一处想,劲往一处使,共同推动 gomonkey 社区连续发展,不绝繁荣,从一个胜利走向另一个胜利。
在众多新特性中,gomonkey 全面支持 arm64 架构 是对业界影响最大的一个特性。客岁笔者刚发布支持该特性的版本后,就很不测的收到了 Bouk 大神的来信:


这里必要夸大一下:Bouke 是 Go 语言 monkey工程的创建者,在 2015 年就发表了 Go 语言猴子补丁原理的文章。毫无疑问,gomonkey) 的思维底座紧张来自 Bouke 的贡献,向他致敬,非常感谢!
如果你对 gomonkey 全面支持 arm64 架构感爱好,可以进一步阅读笔者之前写的一篇文章《gomonkey 全面支持 arm64 了》。
gomonkey 惯用法革新

gomonkey 底子特性列表如下:

  • 支持为一个函数打一个桩
  • 支持为一个成员方法打一个桩
  • 支持为一个全局变量打一个桩
  • 支持为一个函数变量打一个桩
  • 支持为一个函数打一个特定的桩序列
  • 支持为一个成员方法打一个特定的桩序列
  • 支持为一个函数变量打一个特定的桩序列
想要相识 gomonkey 的这些底子特性,可以参考几年前笔者的一篇文章《gomonkey 1.0 正式发布》。
interface 惯用法革新

之前许多 gopher 风俗利用 GoMock 框架对 interface 举行打桩,笔者当时也写了一篇文章《GoMock框架利用指南》。后来有一些 gomonkey 用户想用 gomonkey 对 interface 举行打桩,从而镌汰多个打桩框架的学习资本和测试用例的维护资本。
革新1:当为 interface 打一个桩时,用户直接复用组合之前的 ApplyFunc 和 ApplyMethod 接口即可
对 interface 打一个桩,实在不消提供类似 ApplyInterface 的接口,而仅仅是让用户复用组合之前的 ApplyFunc 和 ApplyMethod 接口。原因实在很简单,当我们界说了一个 interface 时,体系中就会有一个或多个实现类(struct),我们可以通过 ApplyFunc 接口让 interface 变量指向一个实现类对象,然后通过 ApplyMethod 接口来改变该实现类的举动,这就相当于对 interface 完成了打桩。
示例代码:先构造一个 Etcd 对象 e,通过第一层 convey 调用 ApplyFunc 让 Db 的 interface 变量指向 e,然后在第二层 convey 中调用 ApplyMethod 对 Db 完成打一个桩。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 11:01, Processed in 0.183433 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表