我想為我的http處理程式建立一個測驗部分,我想按原樣使用http處理程式函式,但我想有單獨的函式來模擬處理的db部分。我的想法是這樣的:
package main
import (
"log"/span>
"測驗"/span>
)
//DB函式
type UserDBFunctions interface {
InsertUser() string
}
type UserDB struct {
}
func (u UserDB) InsertUser() string {
return "hello"
}
// http處理函式
type UserHandlerFunctions interface {
注冊() 字串 {
}
type UserHandler struct {
userDb *UserDB
}
func newUserHandler() UserHandler {
return UserHandler{userDb: new(UserDB)}
}
func (u UserHandler) 注冊 注冊() string {
str := u.userDb.InsertUser()
return str " world"/span>
}
func main() {
var i UserHandlerFunctions = newUserHandler()
str := i.Register()
log.Println(str)
}
//測驗函式
type FakeUserDBFunctions interface {
InsertUser() string
}
type FakeUserDB struct {
}
func (u FakeUserDB) InsertUser InsertUser (u FakeUserDB) title">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)
})
}
所以第一個介面是真正的db函式,然后是呼叫db函式的http處理程式,在main()函式下面應該是帶有db函式模擬的測驗。但這部分不能作業。我怎樣才能用一個模擬的界面來取代newUserHandler中的真實界面呢
?我真的希望得到幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313486.html
標籤:
