GORM & go-sqlmock Example
書いてある処理
- 全取得
- 一部取得
- 作成
- 削除
- 更新
sqlite3 mock
記述なし
mysql mock
mysqlの場合は
SkipInitializeWithVersion: true
が必須です。
func GetNewDbMock() (*gorm.DB, sqlmock.Sqlmock, error) {
db, mock, err := sqlmock.New()
if err != nil {
return nil, mock, err
}
gormDB, err := gorm.Open(mysql.Dialector{Config: &mysql.Config{DriverName: "mysql", Conn: db, SkipInitializeWithVersion: true}}, &gorm.Config{})
if err != nil {
return gormDB, mock, err
}
return gormDB, mock, err
}
postgresql mock
記述なし
今までの問題をクリア、SELECT, INSERTの問題解決
注意: SQLクエリの正規表現は重要
参考記事
gorm Transactions official guide
DATA-DOG/go-sqlmockを使ってGormDBをmockする
go-sqlmockを使ってGORMで書いたコードをテストする