github.com/shuguocloud/go-zero@v1.3.0/core/stores/sqlx/sqlconn_test.go (about) 1 package sqlx 2 3 import ( 4 "database/sql" 5 "io" 6 "testing" 7 8 "github.com/DATA-DOG/go-sqlmock" 9 "github.com/stretchr/testify/assert" 10 "github.com/shuguocloud/go-zero/core/logx" 11 ) 12 13 const mockedDatasource = "sqlmock" 14 15 func init() { 16 logx.Disable() 17 } 18 19 func TestSqlConn(t *testing.T) { 20 mock := buildConn() 21 mock.ExpectExec("any") 22 mock.ExpectQuery("any").WillReturnRows(sqlmock.NewRows([]string{"foo"})) 23 conn := NewMysql(mockedDatasource) 24 db, err := conn.RawDB() 25 assert.Nil(t, err) 26 rawConn := NewSqlConnFromDB(db, withMysqlAcceptable()) 27 badConn := NewMysql("badsql") 28 _, err = conn.Exec("any", "value") 29 assert.NotNil(t, err) 30 _, err = badConn.Exec("any", "value") 31 assert.NotNil(t, err) 32 _, err = rawConn.Prepare("any") 33 assert.NotNil(t, err) 34 _, err = badConn.Prepare("any") 35 assert.NotNil(t, err) 36 var val string 37 assert.NotNil(t, conn.QueryRow(&val, "any")) 38 assert.NotNil(t, badConn.QueryRow(&val, "any")) 39 assert.NotNil(t, conn.QueryRowPartial(&val, "any")) 40 assert.NotNil(t, badConn.QueryRowPartial(&val, "any")) 41 assert.NotNil(t, conn.QueryRows(&val, "any")) 42 assert.NotNil(t, badConn.QueryRows(&val, "any")) 43 assert.NotNil(t, conn.QueryRowsPartial(&val, "any")) 44 assert.NotNil(t, badConn.QueryRowsPartial(&val, "any")) 45 assert.NotNil(t, conn.Transact(func(session Session) error { 46 return nil 47 })) 48 assert.NotNil(t, badConn.Transact(func(session Session) error { 49 return nil 50 })) 51 } 52 53 func buildConn() (mock sqlmock.Sqlmock) { 54 connManager.GetResource(mockedDatasource, func() (io.Closer, error) { 55 var db *sql.DB 56 var err error 57 db, mock, err = sqlmock.New() 58 return &pingedDB{ 59 DB: db, 60 }, err 61 }) 62 63 return 64 }