-
-
Notifications
You must be signed in to change notification settings - Fork 409
Open
Description
Hello,
I'm working on a package that wraps an sql.Driver and adds functionality.
To test it, I'm trying to use go-sqlmock.
I'm running into the issue that if I wrap the go-sqlmock Driver, all operations fail with the error:
expected a connection to be available, but it is not
I'm accessing the driver via:
db, _, _ := sqlmock.New()
db.Driver()This can be reproduced e.g. via sqlmw:
package dddbmock_test
import (
"database/sql"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/ngrok/sqlmw"
)
func TestMWWrap(t *testing.T) {
db, _, err := sqlmock.New()
if err != nil {
t.Fatal("sqlmock new failed:", err)
}
sql.Register(
"mwdriver",
sqlmw.Driver(db.Driver(), &sqlmw.NullInterceptor{}),
)
db, err = sql.Open("mydriver", "")
if err != nil {
t.Fatal("opening driver failed:", err)
}
if err := db.Ping(); err != nil {
t.Error("ping failed", err)
}
}Without using other external packages and mimicking the wrapping behavior instead it can be reproduced like:
package dddbmock_test
import (
"database/sql"
"testing"
"github.com/DATA-DOG/go-sqlmock"
)
func TestRegister(t *testing.T) {
db, _, err := sqlmock.New(sqlmock.MonitorPingsOption(true))
if err != nil {
t.Fatal("sqlmock new failed:", err)
}
sql.Register("mydriver", db.Driver())
db, err = sql.Open("mydriver", "")
if err != nil {
t.Fatal("opening driver failed:", err)
}
if err := db.Ping(); err != nil {
t.Error("ping failed", err)
}
if _, err := db.Exec(""); err != nil {
t.Error("exec failed", err)
}
}The comment #83 (comment) seems to be about the same issue.
I guess it's not intended to be used like that, but it would be awesome to support operations on the go-sqlmock Driver.
Metadata
Metadata
Assignees
Labels
No labels