/go-sqlmock-gorm

gorm & go-sqlmockのサンプルコード

Primary LanguageGo

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クエリの正規表現は重要

参考記事

Goでデータベースを簡単にモック化する【sqlmock】

gorm Transactions official guide

DATA-DOG/go-sqlmockを使ってGormDBをmockする

go-sqlmockを使ってGORMで書いたコードをテストする

Gorm2.0でsqlMockに対応する

gorm v2.0 unit testing with sqlmock #3565

testifyによるMockテストの参考例

testifyのMockメソッドに関する詳細説明

testifyによるMockテストのControllerとModelの例に役立った