1 回答

TA貢獻1802條經驗 獲得超6個贊
使您的處理程序成為包含處理程序依賴項的結構上的方法:
type server struct {
srv *service
}
type service struct {
db *mongo.Database
}
func (s *server) PostUser(w http.ResponseWriter, r *http.Request) {
// Create user struct from request data...
if err := s.srv.CreateUser(u); err != nil {
// Error response.
}
// Success response.
}
func (s *service) CreateUser(u *user) error {
// ...
_, err := d.db.Collection("foo").InsertOne(r.Context(), user)
return err
}
func main() {
s := &server{
srv: &service{
db: getMongoDatabase(),
},
}
r := mux.NewRouter()
r.HandleFunc("/user", s.PostUser).Methods("POST")
log.Fatal(http.ListenAndServe("localhost:8081", r))
}
在您的測試代碼中,您可以簡單地注入一個不同的數據庫,讓您的測試在該數據庫上運行。
- 1 回答
- 0 關注
- 116 瀏覽
添加回答
舉報