我想為我的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 關注
- 101 瀏覽
添加回答
舉報
0/150
提交
取消