sqlconn_test.go 1.6 KB

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