当我们建立起最简单的RESTful api後,接下来我们就要将测试也放到我们的程序中了
在golang中,他原本就有将测试的框架包进去他原生的函示库了,在网路上也很很多不一样的测试框架,而我接下来会实做的测试方式,主要是参考
gorm mock
这篇文章的实作方式,如果大家有什麽其他的说明,也可以在下面留言交流
首先,要先安装测试需要的套件
测试框架
https://onsi.github.io/ginkgo/#getting-ginkgo
go get github.com/onsi/ginkgo/ginkgo
go get github.com/onsi/gomega/...
mock框架
https://github.com/golang/mock
go install github.com/golang/mock/[email protected]
gorm mock
https://github.com/DATA-DOG/go-sqlmock
go get github.com/DATA-DOG/go-sqlmock
在这边补充说明一下mock的用途
在最简单的测试中,你的程序中只会有input跟output
例如
func add(a int, b int) (output int) {
return a + b
}
这样在撰写测试的时候就只要写上
result := add(1,2)
Expect(result).To(Equal(3))
这样即可,但如果有一天你的程序有依赖其他人
例如
import (
"math/rand"
)
func isRandomEven() (output bool) {
result := rand.Intn(86)
return result%2 == 0
}
这时的测试就不能像上方这样写了,因为每次测试出来的结果都会不一样
这时候就要将rand.Intn所产出的内容用一个我们可以控制的function来控制,而这个动作就叫做mock
原始程序
import (
"math/rand"
)
var getRandom = rand.Intn
func isRandomEven() (output bool) {
result := getRandom(86)
return result%2 == 0
}
测试
getRandom = func (_ int) int {
return 10
}
result := isRandomEven()
Expect(result).To(Equal(true))
下一篇我们就要将这些测试的内容放到我们的程序中了
<<: Believing These Myths About Assignment Helper Will Not Let You Grow
>>: 闲聊STM32CubeMX和STM32CubeIDE
为什麽你需要 Next.js ? 对於工程师来说选择用什麽样的技术,背後都是取决於商业策略需要什麽...
前几天有写一篇用replit让bot24小时在线的文章 但测试几天後发现bot执行的速度明显变慢个2...
30天的挑战就这样结束了,现在的心情怎麽有些空虚呢?? 哈哈哈,为什麽会这样呢??我想跟题目有关吧,...
原始资料可能来自非常多不同的地方,我们可以根据资料产生的方式来加以分类 感应器资料 这边泛指各种 S...
Array是资料结构的一种,概念就像置物柜一样,每个柜子都可以存放资料并且都有自己的编号称为索引值...