mysql - 测试和模拟 bufio.NewReader(os.Stdin) | 读取符文()
问题描述
谁能帮我为这个函数编写测试:它用于选择users
表并根据其输出,os.Stdin
用于为下一个操作获取输入:
func FindUser() (*model.User, error) {
users := []model.User{}
user := model.User{}
db, err := gorm.Open("mysql", "root:password@/d2h?charset=utf8&parseTime=True&loc=Local")
if err != nil {
log.Panic("Failed to connect database")
}
err = db.Find(&users).Error
if err != nil {
fmt.Printf("No Users Found In The Database!\n")
return nil, err
}
for _, v := range users {
fmt.Println("ID:", v.ID, "Name:", v.Name)
}
fmt.Printf("\nEnter ID Associated:")
reader := bufio.NewReader(os.Stdin)
char, _, err := reader.ReadRune()
if err != nil {
fmt.Println(err)
}
id, err := strconv.Atoi(string(char))
fmt.Printf("You choose :%d\n\n", id)
err = db.Where("id=?", id).First(&user).Error
if err != nil {
fmt.Printf("No User Found with Username\n")
return nil, err
}
return &user, nil
}
它返回的结构是:
type User struct {
ID int `gorm:"id"`
Name string `gorm:"name"`
Balance uint `gorm:"balance"`
Email string `gorm:"email"`
Phone string `gorm:"phone"`
CreatedAt time.Time `gorm:"created_at"`
UpdatedAt time.Time `gorm:"updated_at"`
DeletedAt *time.Time `gorm:"deleted_at"`
}
我想我必须嘲笑:
reader := bufio.NewReader(os.Stdin)
char, _, err := reader.ReadRune()
但我不确定如何模拟这些?
解决方案
推荐阅读
- java - 为什么文件中的值没有存储在类属性中?
- matlab - 将 Matlab 数据分组
- java - 如何控制 JUnit 是否创建正在测试其行为的类的实例?
- ruby-on-rails - Rails 5:旧值未在数据库中更新
- python - 在python中使用硒从其特定的td标签中找出tr标签的索引
- c++ - Visual Studio C++ 项目 (win64) 的 Eclipse Paho MQTT C 出现 LNK2019 错误
- c# - 将宽度绑定到 WPF 中两个元素的实际宽度之和
- android - 用于 Unity 的最新 Google Play 游戏服务插件无法正常工作
- node.js - 在 express 节点 js 中访问令牌身份验证(没有 jwt 或护照)
- javascript - Phaser P2 Player 踢球并在击球时添加 Impulse