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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

測試包含對 sql 的調(diào)用的 Golang 函數(shù)。打開沒有數(shù)據(jù)庫的連接

測試包含對 sql 的調(diào)用的 Golang 函數(shù)。打開沒有數(shù)據(jù)庫的連接

Go
湖上湖 2022-06-13 15:52:36
所以我剛剛開始掌握 Golang。我正在為有趣的人編寫一個應(yīng)用程序,只是為了理解事物并了解它。我有一大堆函數(shù)將與我傳入的數(shù)據(jù)庫進行交互以*SQL.DB供函數(shù)使用。我可以使用來自sqlmock的模擬接口輕松地測試這些。那里沒問題。我現(xiàn)在正在為應(yīng)用程序編寫初始化函數(shù),該函數(shù)將啟動數(shù)據(jù)庫連接,該連接將附加到一個結(jié)構(gòu)并從那里傳遞給實用程序函數(shù)。但是,我正在努力尋找一種方法來輕松測試該連接而無需設(shè)置實際數(shù)據(jù)庫的麻煩。所以我猜我的應(yīng)用程序結(jié)構(gòu)可能很糟糕,或者我錯過了一些可能非常明顯的東西。所以這里有一些示例代碼來說明我的困境。util.gopackage mainimport (    "log"    "database/sql"    "github.com/go-sql-driver/mysql")func DoDBStuff(db *sql.DB) {    rows, err := db.Query("SELECT column1, column2 FROM example")    if err != nil {       log.Error(err)    }    // do stuff with rows}util_test.gopackage mainimport (    "testing"    "github.com/DATA-DOG/go-sqlmock")func TestDoDBStuff(t *testing.T) {    db, mock, err := sqlmock.New()    if err != nil {        t.Fatalf("An error '%s' was not expected when opening a stub database connection", err)    }    defer db.Close()    rows := sqlmock.NewRows([]string{"col1", "col2"})    rows.AddRow("val1", "val2")    rows.AddRow("val3", "val4")    mock.ExpectQuery("^SELECT column1, column2 from example$").WillReturnRows(rows)    DoDBStuff(db)    if err := mock.ExpectationsWereMet(); err != nil {        t.Errorf("there were unfulfilled expectations: %s", err)    }}一切正常,我可以測試我的數(shù)據(jù)庫查詢。但是現(xiàn)在我想測試初始化應(yīng)用程序。package mainimport (    "database/sql"    "github.com/go-sql-driver/mysql")type App {    DB *sql.DB    // some other data structures}func (a *App) InitApp(connectionString string) {    a.DB = sql.Open("mysql", connectionString)    // other init stuff}但是由于我不能通過,SQL我認(rèn)為它不能被嘲笑,當(dāng)然不容易。所以我在如何前進方面有點掙扎。我打算讓它坐在休息 API 后面,所以在啟動時,應(yīng)用程序需要在能夠處理任何請求之前進行初始化。理想情況下,我希望能夠在無需設(shè)置數(shù)據(jù)庫的情況下測試 REST 接口,延遲使用真實數(shù)據(jù)進行測試,直到我可以將代碼輸入到開發(fā)環(huán)境中。所以我真的很想知道:我想要的可能嗎?有更好的方法嗎?如果不是,我錯過了什么?糟糕的測試設(shè)計或糟糕的代碼設(shè)置?
查看完整描述

1 回答

?
拉風(fēng)的咖菲貓

TA貢獻1995條經(jīng)驗 獲得超2個贊

Dockertest可以創(chuàng)建一個 Docker 容器,運行你想要的任何東西(即 MySQL),你可以針對它進行測試。它旨在能夠進行適當(dāng)?shù)募蓽y試,因此它應(yīng)該能夠做你想做的事情(你也不再需要sqlmock了)。



查看完整回答
反對 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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