@@ -3,6 +3,7 @@ package sqlmock
3
3
import (
4
4
"bytes"
5
5
"database/sql"
6
+ "database/sql/driver"
6
7
"fmt"
7
8
"testing"
8
9
)
@@ -670,3 +671,85 @@ func queryRowBytesNotInvalidatedByClose(t *testing.T, rows *Rows, scan func(*sql
670
671
t .Fatal (err )
671
672
}
672
673
}
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 ExampleRows_AddRows () {
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