@@ -5,7 +5,9 @@ package sqlmock
55import (
66 "context"
77 "database/sql"
8+ "database/sql/driver"
89 "errors"
10+ "reflect"
911 "testing"
1012 "time"
1113)
@@ -639,3 +641,43 @@ func TestPingExpectationsContextTimeout(t *testing.T) {
639641 t .Errorf ("expected Ping to return after context timeout, but it did not in a timely fashion" )
640642 }
641643}
644+
645+ func Test_sqlmock_Exec (t * testing.T ) {
646+ db , mock , err := New ()
647+ if err != nil {
648+ t .Errorf ("an error '%s' was not expected when opening a stub database connection" , err )
649+ }
650+ defer db .Close ()
651+ query := "SELECT name, email FROM users WHERE name = ?"
652+
653+ expected := NewResult (1 , 1 )
654+ mock .ExpectExec ("SELECT (.+) FROM users WHERE (.+)" ).
655+ WillReturnResult (expected )
656+
657+ result , err := mock .(* sqlmock ).Exec (query , []driver.Value {"test" })
658+ if err != nil {
659+ t .Error (err )
660+ return
661+ }
662+ if ! reflect .DeepEqual (result , expected ) {
663+ t .Errorf ("Results are not equal. Expected: %v, Actual: %v" , expected , result )
664+ return
665+ }
666+ }
667+
668+ func Test_sqlmock_Query (t * testing.T ) {
669+ db , mock , err := New ()
670+ if err != nil {
671+ t .Errorf ("an error '%s' was not expected when opening a stub database connection" , err )
672+ }
673+ defer db .Close ()
674+ expectedRows := mock .NewRows ([]string {"id" , "name" , "email" }).AddRow (1 , "test" , "test@example.com" )
675+ mock .ExpectQuery ("SELECT (.+) FROM users WHERE (.+)" ).WillReturnRows (expectedRows )
676+ query := "SELECT name, email FROM users WHERE name = ?"
677+ rows , err := mock .(* sqlmock ).Query (query , []driver.Value {"test" })
678+ if err != nil {
679+ t .Error (err )
680+ return
681+ }
682+ defer rows .Close ()
683+ }
0 commit comments