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
錯誤。
沒有留言:
張貼留言