package orm_test import ( "context" "database/sql" "os" "regexp" "testing" "modelRT/database" "modelRT/network" "modelRT/orm" "github.com/DATA-DOG/go-sqlmock" "github.com/gofrs/uuid" "github.com/stretchr/testify/assert" "gorm.io/driver/mysql" "gorm.io/gorm" ) var ( mock sqlmock.Sqlmock err error baseDB *sql.DB pgClient *gorm.DB ) func TestMain(m *testing.M) { baseDB, mock, err = sqlmock.New() if err != nil { panic(err) } // 把项目使用的DB连接换成sqlmock的DB连接 pgClient, _ = gorm.Open(mysql.New(mysql.Config{ Conn: baseDB, SkipInitializeWithVersion: true, DefaultStringSize: 0, })) os.Exit(m.Run()) } func TestUserDao_CreateUser(t *testing.T) { topologicInfo := &orm.Topologic{ UUIDFrom: uuid.FromStringOrNil("70c190f2-8a60-42a9-b143-ec5f87e0aa6b"), UUIDTo: uuid.FromStringOrNil("70c190f2-8a75-42a9-b166-ec5f87e0aa6b"), Comment: "test", Flag: 1, } // ud := dao2.NewUserDao(context.TODO()) mock.ExpectBegin() mock.ExpectExec(regexp.QuoteMeta("INSERT INTO `Topologic`")). WithArgs(topologicInfo.Flag, topologicInfo.UUIDFrom, topologicInfo.UUIDTo, topologicInfo.Comment). WillReturnResult(sqlmock.NewResult(1, 1)) mock.ExpectCommit() err := database.CreateTopologicIntoDB(context.TODO(), pgClient, 1, []network.TopologicUUIDCreateInfo{ { UUIDFrom: uuid.FromStringOrNil("70c190f2-8a60-42a9-b143-ec5f87e0aa6b"), UUIDTo: uuid.FromStringOrNil("70c190f2-8a75-42a9-b166-ec5f87e0aa6b"), Comment: "test", Flag: 1, }, }) assert.Nil(t, err) err = mock.ExpectationsWereMet() assert.Nil(t, err) }