diff --git a/README.md b/README.md index 101ec7e..a31dcda 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ import ( "github.com/sjqzhang/gmock" "github.com/sjqzhang/gmock/mockdb" "github.com/sjqzhang/gmock/mockdocker" + _ "gorm.io/driver/mysql" gormv2 "gorm.io/gorm" "io/ioutil" "net/http" @@ -37,17 +38,25 @@ func main() { testMockRedis() testMockHttpServer() testMockDocker() + testDBUtil() } func testMockGORM() { var db *gorm.DB - mockdb := gmock.NewMockGORM("example", func(gorm *mockdb.MockGORM) { + mockdb.DBType = "mysql" + mock := gmock.NewMockGORM("example", func(gorm *mockdb.MockGORM) { db = gorm.GetGormDB() }) - mockdb.RegisterModels(&User{}) - mockdb.ResetAndInit() - mockdb.ResetAndInit() + fmt.Println(mock.GetDSN()) + //mock.RegisterModels(&User{}) + mock.InitSchemas(`CREATE TABLE user ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + age int(3) DEFAULT NULL, + name varchar(255) DEFAULT NULL COMMENT '名称', + PRIMARY KEY (id) +) ENGINE=InnoDB ;`) + mock.ResetAndInit() var user User err := db.Where("id=?", 1).Find(&user).Error @@ -58,39 +67,34 @@ func testMockGORM() { panic(fmt.Errorf("testMockGORM error")) } - } func testDBUtil() { - var db *gorm.DB - mockdb := gmock.NewMockGORM("example", func(gorm *mockdb.MockGORM) { - db = gorm.GetGormDB() - }) - mockdb.RegisterModels(&User{}) - mockdb.ResetAndInit() - mockdb.ResetAndInit() - util := gmock.NewDBUtil() - - var user User - - util.QueryObjectBySQL(db.DB(), &user, "select * from user") - if user.Id != 1 { - panic(fmt.Errorf("testDBUtil error")) + util.RunMySQLServer("test", 33333, false) + db, err := gorm.Open("mysql", "user:pass@tcp(127.0.0.1:33333)/test?charset=utf8mb4&parseTime=True&loc=Local") + if err != nil { + panic(err) } - + sqlText := util.ReadFile("./example/ddl.txt") + for _, s := range util.ParseSQLText(sqlText) { + fmt.Println(db.Exec(s)) + } + fmt.Println(util.QueryListBySQL(db.DB(), "select * from project")) } func testMockGORMV2() { + mockdb.DBType = "mysql" var db *gormv2.DB - mockdb := gmock.NewMockGORMV2("example", func(orm *mockdb.MockGORMV2) { + mock := gmock.NewMockGORMV2("example", func(orm *mockdb.MockGORMV2) { db = orm.GetGormDB() }) //注册模型 - mockdb.RegisterModels(&User{}) + mock.RegisterModels(&User{}) //初始化数据库及表数据 - mockdb.ResetAndInit() - //db := mockdb.GetGormDB() + mock.ResetAndInit() + mock.ResetAndInit() + //db := mock.GetGormDB() var user User err := db.Where("id=?", 1).Find(&user).Error if err != nil { @@ -103,7 +107,7 @@ func testMockGORMV2() { } func testMockRedis() { - server := gmock.NewMockRedisServer() + server := gmock.NewMockRedisServer(63790) client := server.GetRedisClient() ctx := context.Background() key := "aa" @@ -142,19 +146,21 @@ func testMockHttpServer() { if err != nil { panic(err) } - if string(data)!="hello baidu" { + if string(data) != "hello baidu" { panic(fmt.Errorf("testMockHttpServer error")) } } func testMockXORM() { var engine *xorm.Engine - mockdb := gmock.NewMockXORM("example", func(orm *mockdb.MockXORM) { + mockdb.DBType = "mysql" + mock := gmock.NewMockXORM("example", func(orm *mockdb.MockXORM) { engine = orm.GetXORMEngine() }) - mockdb.RegisterModels(&User{}) - mockdb.ResetAndInit() - db := mockdb.GetXORMEngine() + mock.RegisterModels(&User{}) + + mock.ResetAndInit() + db := mock.GetXORMEngine() var user User _, err := db.Where("id=?", 1).Get(&user) if err != nil { @@ -169,7 +175,7 @@ func testMockDocker() { mock := mockdocker.NewMockDockerService() defer mock.Destroy() err := mock.InitContainerWithCmd(func(cmd *string) { - // 注意:容器必须后台运行,否则会挂起,程序不会继续执行 + // 注意:容器必须后台运行,否则会挂起,程序不会继续执行,所以要保证你的容器后台运行不退出 *cmd = "docker run --name some-mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7" }) fmt.Println(err) @@ -179,4 +185,5 @@ func testMockDocker() { fmt.Println("mysql start success") } + ``` \ No newline at end of file