无论你处于什么位置,做任何事,都要有责任心。你写的是代码,也是信任!
要对自己负责!从需求分析、系统设计到功能开发;说的每句话,画的每张图,写的每行代码,都关系着你的面子,关系着你在别人心中的份量。在开发中如何高效高质量交付呢?
单元测试
就是把控代码质量的金钥匙
之一。
单元测试是整个测试体系中最底层的自动化测试,也是
代价最小
把控服务质量的方法。
从一个功能开始
在工作中,我发现大多数人没有写单元测试的习惯,或者没有正确的思维框架。因此,本文从模仿掘金的草稿功能说起,来谈谈单元测试之理论与实践参考。
简化的功能:
- 创建空草稿
- 更新草稿
- 查询草稿
- 更新状态
package service
import (
"time"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// Draft 草稿
type Draft struct {
gorm.Model
Title string
Content string
Post rune
}
var db *gorm.DB
func init() {
var err error
// 仅为了方便演示使用sqlite
db, err = gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db.AutoMigrate(&Draft{})
}
//CreateEmptyDraft 创建空草稿
func CreateEmptyDraft(id uint) error {
dra := new(Draft)
dra.ID = id
dra.Post = 'N'
//保存 draft
result := db.Create(dra)
if result.Error != nil {
return result.Error
}
return nil
}
//UpdateDraft 更新草稿
func UpdateDraft(dra *Draft) error {
dra.UpdatedAt = time.Now()
// 更新 draft
err := db.Save(dra).Error
return err
}
// GetDraft 查询草稿
func GetDraft(id uint) (*Draft, error) {
var dra Draft
// 查询 draft
err := db.First(&dra, id).Error
if err != nil {
return nil, err
}
return &dra, nil
}
// PostDraft 发表草稿状态
func PostDraft(id uint) error {
var dra Draft
err := db.First(&dra, id).Error
if err != nil {
return err
}
dra.Post = 'Y'
err = db.Save(dra).Error
return err
}
复制代码
上面,我们在服务层定义了四个方法,分别模拟
4个接口服务层实现。再来看下一个草稿
的状态图:
喜欢就支持一下吧
相关推荐