第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 Go 中為允許單元測(cè)試的休息服務(wù)設(shè)置 Mongo DB?

如何在 Go 中為允許單元測(cè)試的休息服務(wù)設(shè)置 Mongo DB?

Go
慕雪6442864 2023-06-19 15:30:13
我正在使用 MongoDB 和 mux 路由器設(shè)置休息服務(wù)。我遇到了關(guān)于如何最好地設(shè)置它以允許在單獨(dú)的數(shù)據(jù)庫(kù)中進(jìn)行單元/集成測(cè)試的問(wèn)題。我曾嘗試在 Init() 函數(shù)中設(shè)置數(shù)據(jù)庫(kù),但這在嘗試使用測(cè)試數(shù)據(jù)庫(kù)設(shè)置單元測(cè)試時(shí)給我?guī)?lái)了問(wèn)題。以下是我現(xiàn)在所處位置的一些示例。我試圖在發(fā)布之前使用一種方法連接到數(shù)據(jù)庫(kù),因此在我的測(cè)試中我可以連接到不同的測(cè)試數(shù)據(jù)庫(kù)。type user struct {    name string `json:"name"`    age  int    `json:"age"`}type database struct {    db *mongo.Database}func ConnectToDB() (*database, error) {    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))    if err != nil {        return nil, err    }    if err := client.Connect(context.Background()); err != nil {        return nil, err    }    database := &database{        db: client.Database("PMBaseGo"),    }    return database, nil}func PostUser(w http.ResponseWriter, r *http.Request) {    w.Header().Set("Content-Type", "application/json")    //Retrieving request body    var user user    _ = json.NewDecoder(r.Body).Decode(&user)    //Posting Company.    err := PostUserToDB(user)    //Error Handling    if err != nil {        fmt.Println(err)        w.WriteHeader(500)    }}func (d *database) connPostUserToDB(user user) error {    _, err := d.db.Collection("companies").InsertOne(context.Background(), user)    if err != nil {        return err    }    return nil}func main() {    _, _ = ConnectToDB()    r := mux.NewRouter()    r.HandleFunc("/user", PostUser).Methods("POST")    fmt.Println("Application Running...")    log.Fatal(http.ListenAndServe("localhost:8081", r))}我現(xiàn)在遇到的問(wèn)題是試圖調(diào)用函數(shù)PostUserToDB中的方法PostUser。我開(kāi)始認(rèn)為問(wèn)題在于我將如何連接到數(shù)據(jù)庫(kù)。
查看完整描述

1 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

使您的處理程序成為包含處理程序依賴(lài)項(xiàng)的結(jié)構(gòu)上的方法:


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))

}

在您的測(cè)試代碼中,您可以簡(jiǎn)單地注入一個(gè)不同的數(shù)據(jù)庫(kù),讓您的測(cè)試在該數(shù)據(jù)庫(kù)上運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)