1
0
mirror of https://github.com/DATA-DOG/go-sqlmock.git synced 2025-06-23 00:17:47 +02:00

do not expose sql driver methods for sqlmock, give interface

This commit is contained in:
gedi
2015-08-28 11:06:14 +03:00
parent 711064c51d
commit febff80c09
7 changed files with 95 additions and 72 deletions

View File

@ -11,7 +11,7 @@ var pool *mockDriver
func init() {
pool = &mockDriver{
conns: make(map[string]*Sqlmock),
conns: make(map[string]*sqlmock),
}
sql.Register("sqlmock", pool)
}
@ -19,7 +19,7 @@ func init() {
type mockDriver struct {
sync.Mutex
counter int
conns map[string]*Sqlmock
conns map[string]*sqlmock
}
func (d *mockDriver) Open(dsn string) (driver.Conn, error) {
@ -39,18 +39,18 @@ 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() (db *sql.DB, mock *Sqlmock, err error) {
func New() (db *sql.DB, mock Sqlmock, err error) {
pool.Lock()
dsn := fmt.Sprintf("sqlmock_db_%d", pool.counter)
pool.counter++
mock = &Sqlmock{dsn: dsn, drv: pool, MatchExpectationsInOrder: true}
pool.conns[dsn] = mock
smock := &sqlmock{dsn: dsn, drv: pool, ordered: true}
pool.conns[dsn] = smock
pool.Unlock()
db, err = sql.Open("sqlmock", dsn)
if err != nil {
return
}
return db, mock, db.Ping()
return db, smock, db.Ping()
}