为了账号安全,请及时绑定邮箱和手机立即绑定

使用内部函数进行戈朗 http 处理程序测试

使用内部函数进行戈朗 http 处理程序测试

Go
慕容森 2022-10-04 15:48:40
我想为我的http处理程序构建一个测试部分,我想使用http处理程序函数,但我想有单独的函数来模拟处理的数据库部分。我想到的是这样的:package mainimport (    "log"    "testing")// DB functionstype UserDBFunctions interface {    InsertUser() string}type UserDB struct {}func (u UserDB) InsertUser() string {    return "hello"}// http handler functionstype UserHandlerFunctions interface {    Register() string}type UserHandler struct {    userDb *UserDB}func newUserHandler() UserHandler {    return UserHandler{userDb: new(UserDB)}}func (u UserHandler) Register() string {    str := u.userDb.InsertUser()    return str + " world"}func main() {    var i UserHandlerFunctions = newUserHandler()    str :=  i.Register()    log.Println(str)}// test functionstype FakeUserDBFunctions interface {    InsertUser() string}type FakeUserDB struct {}func (u FakeUserDB) InsertUser() string {    return "bye"}func newFakeUserHandler() UserHandler {    return UserHandler{userDb: *UserDB(&FakeUserDB{})}}func TestRegisterUser(t *testing.T) {    t.Run("register user", func(t *testing.T) {        var i UserHandlerFunctions = newFakeUserHandler()        str := i.Register()        log.Println(str)    })}因此,第一个接口是针对真正的数据库函数的,然后是调用数据库函数的http处理程序,在main()函数下面应该有带有数据库函数模型的测试。但这部分不起作用。如何将新用户处理程序中的真实界面替换为模型。
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

用户处理者应使用用户数据库功能而不是用户数据库。

type UserHandler struct {
    userDb UserDBFunctions
}

这是修改后的一个 https://play.golang.org/p/nLiaomKA2NH


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号