《使用Gin框架构建分布式应用》阅读笔记:p272-p306

news/2025/1/16 1:58:45/文章来源:https://www.cnblogs.com/codists/p/18518605

《用Gin框架构建分布式应用》学习第15天,p272-p306总结,总35页。

一、技术总结

1.TDD(test-driven development)

虽然经常看到TDD这个属于,从本人的工作经历看,实际开发中用得相对较少。

2.unitest(单元测试)

go语言开发中,使用testify进行单元测试开发。

(1)创建测试文件

测试文件以xxx_test.go命名,与xxx.go在同一目录下。示例:main.go和mian_test.go在同一目录下。

(2)编写测试函数

测试函数必须Test作为前缀,后面跟被测试函数名,示例:被测试函数名称为IndexHandler,测试函数名称为TestIndexHandler。

main.go:

// main.go
package mainimport ("github.com/gin-gonic/gin""net/http"
)func IndexHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "hello world"})
}func SetupServer() *gin.Engine {router := gin.Default()router.GET("/", IndexHandler)return router
}
func main() {err := SetupServer().Run()if err != nil {return}
}

main_test.go:

package mainimport ("github.com/stretchr/testify/assert""io""net/http""net/http/httptest""testing"
)func TestIndexHandler(t *testing.T) {// 不适用 testify// 注意,因为`{"message":"hello world"}`是字符串,所以冒号后面如果有空格,在判断相等的时候也会有影响// mockUserResp := `{"message":"hello world"}`//// ts := httptest.NewServer(SetupServer())// defer ts.Close()//// res, err := http.Get(ts.URL + "/")// if err != nil {// 	t.Fatalf("Expected no error: got %v", err)// }//// defer res.Body.Close()//// if res.StatusCode != http.StatusOK {// 	t.Fatalf("Expected status code 200: got %v", res.StatusCode)// }//// // ioutil.ReadAll 已不推荐使用// // responseData, err := ioutil.ReadAll(res.Body)// responseData, err := io.ReadAll(res.Body)// if string(responseData) != mockUserResp {// 	t.Fatalf("Expected hello world message: got %v", string(responseData))// }// 使用 testifymockUserResp := `{"message": "hello world"}`ts := httptest.NewServer(SetupServer())defer ts.Close()res, err := http.Get(ts.URL + "/")defer res.Body.Close()assert.Nil(t, err)assert.Equal(t, http.StatusOK, res.StatusCode)responseData, err := io.ReadAll(res.Body)assert.Equal(t, mockUserResp, string(responseData))
}

(3)执行测试

go test

3.coverage(测试覆盖率)

p282, Test coverage describes how much of a package's code is exercised by running the package's tests.

4.integration test(集成测试)

integration test就是多个功能一起测试。

5.security test(安全测试)

go语言开发中,使用gosec进行安全测试。

6.postman

书上介绍了postman的collection, environment, scripts的使用,基本属于工作中常用到的操作。当然,postman本身也不复杂。

go语言开发中,使用

7.吐槽系列

// chapter 01router := gin.Default()// chapter 07r := gin.Default()

作者在chapter 01用的名称是router, 那么在chapter 07也应该用这个,而不是r,保持字段名称的一致性!想起本人在实际工作中遇到的一个项目,其中表示“设备”的名称就用了三个:eqp, equip, equipment,但其实都是指同一个东西,这无形中会导致一些问题:(1)阅读代码的人会有疑问,这三个表示的是同一个东西吗?(2)写代码的时候得思考,用的是哪个名称。

二、英语总结

无。

三、其它

今天没有什么想说的。

四、参考资料

1. 编程

(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

星型模型和雪花模型的区别》

星型模型和雪花模型是两种常用的数据仓库设计方法,主要差异包括:1.维度表的设计;2.数据冗余程度;3.查询性能;4.数据维护复杂度;5.扩展性和灵活性;6.实现难度;7.适用场景。星型模型以其简单高效的结构适用于大多数业务分析场景,而雪花模型则适用于更复杂的数据分析需求…

二阶系统对初始状态的响应

6. 二阶系统对初始状态的响应 当系统的输入 \(u(t)=0\) ,上式可以写成 \[\frac{\mathrm{d}z\left(t\right)}{\mathrm{d}t}=Az\left(t\right),\quad\text{其中} \quad \mathbf{A}=\begin{bmatrix}0&1\\-\omega_\mathrm{n}^2&-2\zeta\omega_\mathrm{n}\end{bmatrix} \]…

LoRA原理

图1描述了LoRA微调的原理,即在原模型的基础上,建立一个旁支模型,旁支模型由A和B两个小矩阵构成,且A@B的维度等于原模型的维度。图1 LoRA原理图1的LoRA原理,也可写成式2的等式,权重W的新状态W’,为图10左路WFP16与右路A FP16@B FP16乘积之和,其中W、A、B的上标FP16,意指…

PHP和Java在后端开发上有哪些不同_1

PHP和Java是两种广泛使用的后端开发语言,它们在多个方面具有显著的区别。PHP和Java在以下关键方面的不同:1.语言特性和开发环境;2.性能和速度;3.社区支持和资源;4.适用场景和项目类型;5.学习曲线和易用性。PHP作为一种动态脚本语言,被广泛用于快速开发和简单的网站项目,…

云行 | “云”启新篇 “智”赋百业,天翼云为金华数字经济发展注入新动能!

10月17日,以“婺云启航 翼领未来”为主题的天翼云中国行浙江金华站活动圆满落幕。金华市政府有关领导、合作伙伴企业代表等嘉宾出席活动,共话云计算发展新趋势,共探金华市产业数智化升级新路径。现场重磅举行金华市算力公共服务平台、金华市数据交易平台,以及天翼云息壤智算…

云行 | 雪域高原“智变”数智高地,天翼云助力西藏开启发展新程!

10月12日,以“国云注智 安全启航 赋能西藏数字经济新未来”为主题的天翼云中国行活动在西藏成功举办。10月12日,以“国云注智 安全启航 赋能西藏数字经济新未来”为主题的天翼云中国行活动在西藏成功举办。中共西藏自治区委员会网络安全和信息化委员会办公室副主任汪刘艳,西…

Python之pyserial模块 串口通信

python之pyserial模块 原文链接:https://www.cnblogs.com/sureZ-learning/p/17054481.htmlpyserial 模块封装了对串口的访问,兼容各种平台(Windows、Linux、MACOS等)。 其支持的特性如下: 所有平台基于类的接口相同 端口可以通过python来设置 支持不同数据长度、停止位、奇…

没意思。

本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/18518526

layui内置图标

本文来自博客园,作者:已不知落在何地,转载请注明原文链接:https://www.cnblogs.com/yongweijian/p/18518513

BERT模型分析

在2018年Google提出Transformer框架后,2019年,BERT作为最早期的大模型,便应运而生,因为BERT有强大的自然语言理解能力,因此在其被提出后便风靡NLP领域。研读BERT代码,是因为BERT作为大模型起源鼻祖,比GPT起源还早,弄明白其算法思想和其主体代码具体实现逻辑,有利于理解…