当前位置: 首页 > news >正文

广州品牌建站广州品牌建站图文网站模板

广州品牌建站广州品牌建站,图文网站模板,wordpress 下载中心插件,网上教育培训机构GitHub - bytedance/mockey: a simple and easy-to-use golang mock library Go mockito 是什么? mockey是一个简单易用的golang mock库,可以快速方便的mock函数和变量。目前广泛应用于字节跳动服务的单元测试编写。底层是monkey patch,通过在运行时重…

GitHub - bytedance/mockey: a simple and easy-to-use golang mock library

Go mockito 是什么?

 mockey是一个简单易用的golang mock库,可以快速方便的mock函数和变量。目前广泛应用于字节跳动服务的单元测试编写。底层是monkey patch,通过在运行时重写函数指令实现。

  1. 编译时需要关闭inlining和compilation optimization,否则mock可能失败或者报错。有关详细信息,请参阅以下常见问题解答章节。
  2. 在实际编写单元测试的过程中,推荐配合Convey库一起使用。

 

安装

go get github.com/bytedance/mockey@latest

快速指南

import ("fmt""testing". "github.com/bytedance/mockey". "github.com/smartystreets/goconvey/convey"
)func Foo(in string) string {return in
}type A struct{}func (a A) Foo(in string) string { return in }var Bar = 0func TestMockXXX(t *testing.T) {PatchConvey("TestMockXXX", t, func() {Mock(Foo).Return("c").Build()   // mock functionMock(A.Foo).Return("c").Build() // mock methodMockValue(&Bar).To(1)           // mock variableSo(Foo("a"), ShouldEqual, "c")        // assert `Foo` is mockedSo(new(A).Foo("b"), ShouldEqual, "c") // assert `A.Foo` is mockedSo(Bar, ShouldEqual, 1)               // assert `Bar` is mocked})// mock is released automatically outside `PatchConvey`fmt.Println(Foo("a"))        // afmt.Println(new(A).Foo("b")) // bfmt.Println(Bar)             // 0
}

特征

对象

分类

功能细节

函数

基础 mock

普通函数

可变参数函数

普通方法

可变参数方法

嵌套结构体方法

私有类型的导出方法(不同包下)

其他功能

mock 后执行原函数

goroutine 条件过滤

增量改变 mock 行为

获取原函数执行次数

获取 mock 函数执行次数

变量

基础 mock

普通变量

函数变量

 兼容性

OS Support

  • Mac OS(Darwin)
  • Linux
  • Windows

Arch Support

  • AMD64
  • ARM64

Version Support

  • Go 1.13+

License 

 Mockey is distributed under the Apache License, version 2.0. The licenses of third party dependencies of Mockey are explained here.

FAQ 

如何禁用内联和编译优化? 

  1. Command line:go test -gcflags="all=-l -N" -v ./...
  2. Goland:fill -gcflags="all=-l -N" in the Run/Debug Configurations > Go tool arguments dialog box

mock后还是进入了原来的函数?

  1. 尝试使用调试模式。如果能跑通,说明就是问题所在。
  2. 忘记调用了Build(),导致没有实际效果
  3. 目标函数不完全匹配:
    func TestXXX(t *testing.T) {Mock((*A).Foo).Return("c").Build()fmt.Println(A{}.Foo("a")) // enters the original function, because the mock target should be `A.Foo`a := A{}Mock(a.Foo).Return("c").Build()fmt.Println(a.Foo("a")) // enters the original function, because the mock target should be `A.Foo` or extracted from instance `a` using `GetMethod`
    }
  4. 目标函数在其他goroutines中执行:
    func TestXXX(t *testing.T) {PatchConvey("TestXXX", t, func() {Mock(Foo).Return("c").Build()go Foo("a") // the timing of executing 'foo' is uncertain})// when the main goroutine comes here, the relevant mock has been released by 'PatchConvey'. If 'foo' is executed before this, the mock succeeds, otherwise it failsfmt.Println("over")time.Sleep(time.Second)
    }

报错“功能太短无法打补丁”?

  1. 内联或编译优化未禁用:您可以尝试使用调试模式。如果能跑通,说明就是问题所在。请转到常见问题解答的相关部分
  2. 函数真的太短了:意思是目标函数不到一行,导致编译出来的机器码太短。一般两行以上不会出现这个问题
  3. PatchConveyRepeat mocking the same function:以最小单位重复mock同一个函数。如果有这样的需求,请获取Mocker实例并重新mock。
  4. 其他工具mock这个函数:比如monkey或者其他工具mock过这个函数

 

http://www.yayakq.cn/news/898210/

相关文章:

  • 网站群建设的优点六安服装网站建设地址
  • 广州市南沙区建设局网站游戏开发制作培训
  • 金水区网站建设网站建设 h5 小程序
  • 通付盾 建设网站推广网页的策划案
  • 商品房建设信息网站如何给网站刷流量
  • 广州高端网站定制公司哪家好企业网站特点
  • 2018淘宝客网站开发北京网站制作基本流程
  • 长沙网站建设推荐安徽建设工程信息网查询平台蔡庆树
  • 石龙镇网站仿做jsp做网站注册页面
  • 湖南交通建设监理协会网站电商就业前景
  • 音乐网站建站网页制作在线生成
  • 织梦网站排行榜伊春网络运营推广
  • 做外掛网站空间深圳外贸英文网站设计联系电话
  • 如何利用站群做网站沈阳app定制
  • 常德网站设计十大互联网广告公司
  • 云主机建站wordpress如何开启gzip
  • 世纪兴网站建设北京代做网站
  • 阿米纳网站建设室内设计大学排名榜
  • 石家庄建设网站公司哪家好网站建设的三要素
  • 网站 成功案例陕西省建设银行分行网站
  • 宁德蕉城住房和城乡建设部网站自己开一个网站怎么赚钱
  • 吉林网站seowordpress wiki使用
  • 数商云电子商务网站建设网站备案 图片大小
  • 柳州网站建设22网站关键词 查询
  • 设计单位在厦门什么网站怎样修改wordpress
  • 厦门有什么网站制作公司做王境泽表情的网站
  • c2c平台的特点是什么在线排名优化工具
  • 可以上传视频的网站建设2021最新网页游戏开服表
  • 哪个网站做相册好外贸 网站 源码
  • 自己做的网站怎么让别人能访问工业产品设计的基本特征