当前位置: 首页 > 开发杂谈 >

建立第一个单元测试(golang)-1(Day20)

当我们建立起最简单的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/mockgen@v1.6.0

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))

下一篇我们就要将这些测试的内容放到我们的程序中了


相关文章:

  • 友善的用户操作介面可降低人为操作问题发生率
  • 亚马逊新手卖家选品避坑指南
  • [Day25] 程序码重构
  • The way of flushing QNAP DOM
  • [Cmoney 菁英软件工程师战斗营] IOS APP 菜鸟开发笔记(7)----自定义弹出视窗
  • 避免被封店的Shopee上架规则
  • Day10 while回圈
  • 人生的十字路口,选择自己想走的路
  • Cross site scripting 评估工具-CSP Evaluator
  • [Day 3] 排版布局Container
  • Day11 - 使用 Rails Routes 识别用户输入
  • KOL营销怎么才能正确推广产品或服务?
  • 【Day26】其他开源资源篇-odoo重要开源资源
  • 亚马逊卖家如何避免侵权的一些建议
  • 怎么计算shopee店铺延迟发货率?
  • 最便宜的国外VPS推荐:5美金以下的VPS大全
  • Google Fi怎么在国内激活的方法和教程
  • 国内出海企业用哪家公司的短信比较多?
  • vultr.com怎么申请退款教程和方法
  • 教程/魔改BBR 一键安装脚本 for CentOS/Debian 7+
  • Vultr促销码和2020年最新优惠:Vultr注册教程和使用方法
  • Git是什么?
  • 礼品卡和虚拟信用卡的区别:Prepaid Debit Card和Virtual Credit Card区别
  • Google SEO入门:如何做好谷歌网站排名SEO
  • 外贸电商网络营销之心理营销如何做?让客户更信任你的产品和网站
  • Google SEO优化排名的技巧:做好这20件事情谷歌排名必定上去
  • 洛杉矶CN2服务器推荐:PCCW线路VPS,服务器服务商layerhost
  • VPS评测:阿里、腾讯、百度、京东VPS最低配理性对比
  • 美国花旗银行虚拟信用卡申请教程【国内怎么申请美国信用卡】
  • 糖果主机香港VPS优惠码最新七折促销