1
0
mirror of https://github.com/DATA-DOG/go-sqlmock.git synced 2025-06-29 00:31:35 +02:00

allow to use a custom converter

This commit is contained in:
Jan Waś
2018-08-06 22:29:24 +02:00
parent c8e01dc244
commit f2bc8f904e
9 changed files with 96 additions and 27 deletions

View File

@ -39,7 +39,7 @@ func (d *mockDriver) Open(dsn string) (driver.Conn, error) {
// and a mock to manage expectations.
// Pings db so that all expectations could be
// asserted.
func New() (*sql.DB, Sqlmock, error) {
func New(options ...func(*sqlmock) error) (*sql.DB, Sqlmock, error) {
pool.Lock()
dsn := fmt.Sprintf("sqlmock_db_%d", pool.counter)
pool.counter++
@ -48,7 +48,7 @@ func New() (*sql.DB, Sqlmock, error) {
pool.conns[dsn] = smock
pool.Unlock()
return smock.open()
return smock.open(options)
}
// NewWithDSN creates sqlmock database connection
@ -64,7 +64,7 @@ func New() (*sql.DB, Sqlmock, error) {
//
// It is not recommended to use this method, unless you
// really need it and there is no other way around.
func NewWithDSN(dsn string) (*sql.DB, Sqlmock, error) {
func NewWithDSN(dsn string, options ...func(*sqlmock) error) (*sql.DB, Sqlmock, error) {
pool.Lock()
if _, ok := pool.conns[dsn]; ok {
pool.Unlock()
@ -74,5 +74,14 @@ func NewWithDSN(dsn string) (*sql.DB, Sqlmock, error) {
pool.conns[dsn] = smock
pool.Unlock()
return smock.open()
return smock.open(options)
}
// WithValueConverter allows to create a sqlmock connection
// with a custom ValueConverter to support drivers with special data types.
func WithValueConverter(converter driver.ValueConverter) func(*sqlmock) error {
return func(s *sqlmock) error {
s.converter = converter
return nil
}
}