package sqlx import ( "database/sql" "io" "testing" "github.com/DATA-DOG/go-sqlmock" "github.com/stretchr/testify/assert" "github.com/tal-tech/go-zero/core/logx" ) const mockedDatasource = "sqlmock" func init() { logx.Disable() } func TestSqlConn(t *testing.T) { mock := buildConn() mock.ExpectExec("any") mock.ExpectQuery("any").WillReturnRows(sqlmock.NewRows([]string{"foo"})) conn := NewMysql(mockedDatasource) badConn := NewMysql("badsql") _, err := conn.Exec("any", "value") assert.NotNil(t, err) _, err = badConn.Exec("any", "value") assert.NotNil(t, err) _, err = conn.Prepare("any") assert.NotNil(t, err) _, err = badConn.Prepare("any") assert.NotNil(t, err) var val string assert.NotNil(t, conn.QueryRow(&val, "any")) assert.NotNil(t, badConn.QueryRow(&val, "any")) assert.NotNil(t, conn.QueryRowPartial(&val, "any")) assert.NotNil(t, badConn.QueryRowPartial(&val, "any")) assert.NotNil(t, conn.QueryRows(&val, "any")) assert.NotNil(t, badConn.QueryRows(&val, "any")) assert.NotNil(t, conn.QueryRowsPartial(&val, "any")) assert.NotNil(t, badConn.QueryRowsPartial(&val, "any")) assert.NotNil(t, conn.Transact(func(session Session) error { return nil })) assert.NotNil(t, badConn.Transact(func(session Session) error { return nil })) } func buildConn() (mock sqlmock.Sqlmock) { connManager.GetResource(mockedDatasource, func() (io.Closer, error) { var db *sql.DB var err error db, mock, err = sqlmock.New() return &pingedDB{ DB: db, }, err }) return }