diff --git a/expectations_go18.go b/expectations_go18.go index 07227ed..5fade37 100644 --- a/expectations_go18.go +++ b/expectations_go18.go @@ -17,7 +17,7 @@ func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery { sets := make([]*Rows, len(rows)) for i, r := range rows { sets[i] = r - if r.def != nil { + if r != nil && r.def != nil { defs++ } } diff --git a/expectations_test.go b/expectations_test.go index cf0251a..ff9f842 100644 --- a/expectations_test.go +++ b/expectations_test.go @@ -123,3 +123,27 @@ func TestExecWithNoArgsAndWithArgsPanic(t *testing.T) { mock := &sqlmock{} mock.ExpectExec("^INSERT INTO user").WithArgs("John").WithoutArgs() } + + +func TestQueryWillReturnsNil(t *testing.T) { + t.Parallel() + + db, mock, err := New() + if err != nil { + t.Fatal(err) + } + defer db.Close() + + defer func() { + if err := recover(); err != nil { + t.Error(err) + } + }() + + mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(nil) + query := "SELECT name, email FROM users WHERE name = ?" + _, err = mock.(*sqlmock).Query(query, []driver.Value{"test"}) + if err != nil { + t.Error(err) + } +}