Skip to content

Instantly share code, notes, and snippets.

@jamiecuthill
Created February 26, 2016 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamiecuthill/2497abae37586a9d4fff to your computer and use it in GitHub Desktop.
Save jamiecuthill/2497abae37586a9d4fff to your computer and use it in GitHub Desktop.
sqlmock false positive on Exec with ExpectationsWereMet
package example
import "database/sql"
func RunExecs(db *sql.DB) {
_, _ = db.Exec("THE FIRST EXEC")
_, _ = db.Exec("THE WRONG EXEC")
}
// All these tests should fail
package example_test
import (
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/SainsburysNDA/example"
)
// False Positive - passes despite mismatched Exec
func TestRunExecsWithOrdered(t *testing.T) {
db, dbmock, _ := sqlmock.New()
dbmock.MatchExpectationsInOrder(true) // This is the default
dbmock.ExpectExec("THE FIRST EXEC")
dbmock.ExpectExec("THE SECOND EXEC")
example.RunExecs(db)
err := dbmock.ExpectationsWereMet()
if err != nil {
t.Fatal(err)
}
}
// Fails as expected
func TestRunExecsWithouOrdered(t *testing.T) {
db, dbmock, _ := sqlmock.New()
dbmock.MatchExpectationsInOrder(false)
dbmock.ExpectExec("THE FIRST EXEC")
dbmock.ExpectExec("THE SECOND EXEC")
example.RunExecs(db)
err := dbmock.ExpectationsWereMet()
if err != nil {
t.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment