@@ -3,6 +3,7 @@ package sqlmock
33import (
44 "bytes"
55 "database/sql"
6+ "database/sql/driver"
67 "fmt"
78 "testing"
89)
@@ -670,3 +671,85 @@ func queryRowBytesNotInvalidatedByClose(t *testing.T, rows *Rows, scan func(*sql
670671 t .Fatal (err )
671672 }
672673}
674+
675+ func TestAddRows (t * testing.T ) {
676+ t .Parallel ()
677+ db , mock , err := New ()
678+ if err != nil {
679+ t .Fatalf ("an error '%s' was not expected when opening a stub database connection" , err )
680+ }
681+ defer db .Close ()
682+
683+ values := [][]driver.Value {
684+ {
685+ 1 , "John" ,
686+ },
687+ {
688+ 2 , "Jane" ,
689+ },
690+ {
691+ 3 , "Peter" ,
692+ },
693+ {
694+ 4 , "Emily" ,
695+ },
696+ }
697+
698+ rows := NewRows ([]string {"id" , "name" }).AddRows (values ... )
699+ mock .ExpectQuery ("SELECT" ).WillReturnRows (rows ).RowsWillBeClosed ()
700+
701+ rs , _ := db .Query ("SELECT" )
702+ defer rs .Close ()
703+
704+ for rs .Next () {
705+ var id int
706+ var name string
707+ rs .Scan (& id , & name )
708+ fmt .Println ("scanned id:" , id , "and name:" , name )
709+ }
710+
711+ if rs .Err () != nil {
712+ fmt .Println ("got rows error:" , rs .Err ())
713+ }
714+ // Output: scanned id: 1 and title: John
715+ // scanned id: 2 and title: Jane
716+ // scanned id: 3 and title: Peter
717+ // scanned id: 4 and title: Emily
718+ }
719+
720+ func ExampleMultiRows () {
721+ db , mock , err := New ()
722+ if err != nil {
723+ fmt .Println ("failed to open sqlmock database:" , err )
724+ }
725+ defer db .Close ()
726+
727+ values := [][]driver.Value {
728+ {
729+ 1 , "one" ,
730+ },
731+ {
732+ 2 , "two" ,
733+ },
734+ }
735+
736+ rows := NewRows ([]string {"id" , "title" }).AddRows (values ... )
737+
738+ mock .ExpectQuery ("SELECT" ).WillReturnRows (rows )
739+
740+ rs , _ := db .Query ("SELECT" )
741+ defer rs .Close ()
742+
743+ for rs .Next () {
744+ var id int
745+ var title string
746+ rs .Scan (& id , & title )
747+ fmt .Println ("scanned id:" , id , "and title:" , title )
748+ }
749+
750+ if rs .Err () != nil {
751+ fmt .Println ("got rows error:" , rs .Err ())
752+ }
753+ // Output: scanned id: 1 and title: one
754+ // scanned id: 2 and title: two
755+ }
0 commit comments