@@ -88,6 +88,29 @@ func ExampleRows_closeError() {
8888 // Output: got error: close error
8989}
9090
91+ func ExampleRows_expectToBeClosed () {
92+ db , mock , err := New ()
93+ if err != nil {
94+ fmt .Println ("failed to open sqlmock database:" , err )
95+ }
96+ defer db .Close ()
97+
98+ rows := NewRows ([]string {"id" , "title" }).AddRow (1 , "john" )
99+ mock .ExpectQuery ("SELECT" ).WillReturnRows (rows ).RowsWillBeClosed ()
100+
101+ db .Query ("SELECT" )
102+
103+ if err := mock .ExpectationsWereMet (); err != nil {
104+ fmt .Println ("got error:" , err )
105+ }
106+
107+ // Output: got error: expected query rows to be closed, but it was not: ExpectedQuery => expecting Query, QueryContext or QueryRow which:
108+ // - matches sql: 'SELECT'
109+ // - is without arguments
110+ // - should return rows:
111+ // row 0 - [1 john]
112+ }
113+
91114func ExampleRows_customDriverValue () {
92115 db , mock , err := New ()
93116 if err != nil {
@@ -184,6 +207,31 @@ func TestRowsCloseError(t *testing.T) {
184207 }
185208}
186209
210+ func TestRowsClosed (t * testing.T ) {
211+ t .Parallel ()
212+ db , mock , err := New ()
213+ if err != nil {
214+ t .Fatalf ("an error '%s' was not expected when opening a stub database connection" , err )
215+ }
216+ defer db .Close ()
217+
218+ rows := NewRows ([]string {"id" }).AddRow (1 )
219+ mock .ExpectQuery ("SELECT" ).WillReturnRows (rows ).RowsWillBeClosed ()
220+
221+ rs , err := db .Query ("SELECT" )
222+ if err != nil {
223+ t .Fatalf ("unexpected error: %s" , err )
224+ }
225+
226+ if err := rs .Close (); err != nil {
227+ t .Fatalf ("unexpected error: %v" , err )
228+ }
229+
230+ if err := mock .ExpectationsWereMet (); err != nil {
231+ t .Fatal (err )
232+ }
233+ }
234+
187235func TestQuerySingleRow (t * testing.T ) {
188236 t .Parallel ()
189237 db , mock , err := New ()
0 commit comments