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  }