前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang测试框架gostub的使用

golang测试框架gostub的使用

原创
作者头像
Johns
修改2022-06-30 10:27:06
2.1K0
修改2022-06-30 10:27:06
举报
文章被收录于专栏:代码工具代码工具

一。简介

前面我们介绍了testifyconvery框架的使用,接下来我们将学习一下go的一款stub框架gostub。

gostub是一款轻量级的单元测试框架,接口友好,可以对全局变量、函数或过程进行打桩。

gostub 打桩的原理式通过反射,所以要求调用 stub 函数传入第一个参数必须是指针,然而函数并没有指针的概念,所以需要对函数做侵入式修改。这个目前业界用的也不多,我们简单学习一下如何用就行。

二。如何使用?

1. 安装

代码语言:txt
复制
go get github.com/prashantv/gostub

2. 使用

代码语言:txt
复制
func TestCalculate_stub(t *testing.T) {
	assert := assert.New(t)
	num := 10
	f := Calculate

	y1 := f(num)
	assert.Equal(y1, 9)

	// 变量stub
	stubs := Stub(&num, 150)
	defer stubs.Reset()

	y2 := f(num)
	assert.Equal(y2, 149)

	// 函数stub1
	defer stubs.Stub(&f, func(x int) int {
		return x + 1
	}).Reset()

	assert.Equal(f(num), 151)

	// 函数stub2
	defer stubs.StubFunc(&f, 120).Reset()
	assert.Equal(f(num), 120)

	// 没有返回值的函数称之为过程,stub可以为过程打桩
	clean := CloseUserCache
	defer stubs.Stub(&clean, func(s string) {
		fmt.Println(fmt.Sprintf("Clean %s old cache", s))
	}).Reset()
	clean("ggr")

}

更多请参考官方文档:https://pkg.go.dev/github.com/prashantv/gostub#pkg-types

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一。简介
  • 二。如何使用?
    • 1. 安装
      • 2. 使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档