我想为我的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
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消
