AdSense

網頁

2022/2/22

Golang go-sqlmock API簡介

Go語言的go-sqlmock函式庫可對sql driver的行為做mock,下面是常用的API簡介。


範例環境:

  • Go 1.17
  • go-sqlmock v1.5.0


安裝

專案根目錄執行go get github.com/DATA-DOG/go-sqlmock安裝,go-sqlmock。

~/../go-demo$ go get github.com/DATA-DOG/go-sqlmock
go: downloading github.com/DATA-DOG/go-sqlmock v1.5.0
go get: added github.com/DATA-DOG/go-sqlmock v1.5.0


簡介

使用sqlmock.New()建立mock資料庫連線。

使用sqlmock.SqlmockCommon.ExpectBegin()mock資料庫交易開始。若少寫這段會出現call to database transaction Begin, was not expected錯誤。

使用sqlmock.NewResult()建立mock Result並傳入sqlmock.ExpectedExec.WillReturnRows()作為執行script時預期的返回結果。

使用sqlmock.SqlmockCommon.ExpectExec(expectedSQL string)設定預期執行的script是否符合正則(regex),若不符合則不會返回mock結果。

使用sqlmock.Sqlmock.NewRows()建立mock查詢結果Rows並傳入sqlmock.ExpectedQuery.WillReturnRows()作為執行script時預期的返回結果。

使用sqlmock.SqlmockCommon.ExpectQuery(expectedSQL string)設定預期執行的script是否符合正則(regex),若不符合則不會返回mock結果。

使用sqlmock.SqlmockCommon.ExpectCommit()mock提交。若少寫這段會出現all expectations were already fulfilled, call to Commit transaction was not expected錯誤。

沒有留言:

AdSense