Skip to content

Commit 44e746a

Browse files
authored
Merge pull request #295 from IvoGoman/fix-args-passed-not-exp
Fix args passed not exp
2 parents fd316ea + 7c9a431 commit 44e746a

6 files changed

+21
-15
lines changed

expectations_before_go18.go

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ func (e *ExpectedQuery) WillReturnRows(rows *Rows) *ExpectedQuery {
1717

1818
func (e *queryBasedExpectation) argsMatches(args []namedValue) error {
1919
if nil == e.args {
20+
if len(args) > 0 {
21+
return fmt.Errorf("expected 0, but got %d arguments", len(args))
22+
}
2023
return nil
2124
}
2225
if len(args) != len(e.args) {

expectations_before_go18_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
func TestQueryExpectationArgComparison(t *testing.T) {
1212
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
1313
against := []namedValue{{Value: int64(5), Ordinal: 1}}
14-
if err := e.argsMatches(against); err != nil {
15-
t.Errorf("arguments should match, since the no expectation was set, but got err: %s", err)
14+
if err := e.argsMatches(against); err == nil {
15+
t.Error("arguments should not match, since no expectation was set, but argument was passed")
1616
}
1717

1818
e.args = []driver.Value{5, "str"}

expectations_go18.go

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery {
3030

3131
func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
3232
if nil == e.args {
33+
if len(args) > 0 {
34+
return fmt.Errorf("expected 0, but got %d arguments", len(args))
35+
}
3336
return nil
3437
}
3538
if len(args) != len(e.args) {

expectations_go18_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
func TestQueryExpectationArgComparison(t *testing.T) {
1313
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
1414
against := []driver.NamedValue{{Value: int64(5), Ordinal: 1}}
15-
if err := e.argsMatches(against); err != nil {
16-
t.Errorf("arguments should match, since the no expectation was set, but got err: %s", err)
15+
if err := e.argsMatches(against); err == nil {
16+
t.Error("arguments should not match, since no expectation was set, but argument was passed")
1717
}
1818

1919
e.args = []driver.Value{5, "str"}
@@ -104,8 +104,8 @@ func TestQueryExpectationArgComparisonBool(t *testing.T) {
104104
func TestQueryExpectationNamedArgComparison(t *testing.T) {
105105
e := &queryBasedExpectation{converter: driver.DefaultParameterConverter}
106106
against := []driver.NamedValue{{Value: int64(5), Name: "id"}}
107-
if err := e.argsMatches(against); err != nil {
108-
t.Errorf("arguments should match, since the no expectation was set, but got err: %s", err)
107+
if err := e.argsMatches(against); err == nil {
108+
t.Errorf("arguments should not match, since no expectation was set, but argument was passed")
109109
}
110110

111111
e.args = []driver.Value{

sqlmock_go18_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -435,9 +435,9 @@ func TestContextExecErrorDelay(t *testing.T) {
435435
defer db.Close()
436436

437437
// test that return of error is delayed
438-
var delay time.Duration
439-
delay = 100 * time.Millisecond
438+
var delay time.Duration = 100 * time.Millisecond
440439
mock.ExpectExec("^INSERT INTO articles").
440+
WithArgs("hello").
441441
WillReturnError(errors.New("slow fail")).
442442
WillDelayFor(delay)
443443

sqlmock_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,7 @@ func TestPrepareExec(t *testing.T) {
959959
mock.ExpectBegin()
960960
ep := mock.ExpectPrepare("INSERT INTO ORDERS\\(ID, STATUS\\) VALUES \\(\\?, \\?\\)")
961961
for i := 0; i < 3; i++ {
962-
ep.ExpectExec().WillReturnResult(NewResult(1, 1))
962+
ep.ExpectExec().WithArgs(i, "Hello"+strconv.Itoa(i)).WillReturnResult(NewResult(1, 1))
963963
}
964964
mock.ExpectCommit()
965965
tx, _ := db.Begin()
@@ -1073,7 +1073,7 @@ func TestPreparedStatementCloseExpectation(t *testing.T) {
10731073
defer db.Close()
10741074

10751075
ep := mock.ExpectPrepare("INSERT INTO ORDERS").WillBeClosed()
1076-
ep.ExpectExec().WillReturnResult(NewResult(1, 1))
1076+
ep.ExpectExec().WithArgs(1, "Hello").WillReturnResult(NewResult(1, 1))
10771077

10781078
stmt, err := db.Prepare("INSERT INTO ORDERS(ID, STATUS) VALUES (?, ?)")
10791079
if err != nil {
@@ -1102,9 +1102,9 @@ func TestExecExpectationErrorDelay(t *testing.T) {
11021102
defer db.Close()
11031103

11041104
// test that return of error is delayed
1105-
var delay time.Duration
1106-
delay = 100 * time.Millisecond
1105+
var delay time.Duration = 100 * time.Millisecond
11071106
mock.ExpectExec("^INSERT INTO articles").
1107+
WithArgs("hello").
11081108
WillReturnError(errors.New("slow fail")).
11091109
WillDelayFor(delay)
11101110

@@ -1230,10 +1230,10 @@ func Test_sqlmock_Prepare_and_Exec(t *testing.T) {
12301230

12311231
mock.ExpectPrepare("SELECT (.+) FROM users WHERE (.+)")
12321232
expected := NewResult(1, 1)
1233-
mock.ExpectExec("SELECT (.+) FROM users WHERE (.+)").
1233+
mock.ExpectExec("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").
12341234
WillReturnResult(expected)
12351235
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "[email protected]")
1236-
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WillReturnRows(expectedRows)
1236+
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(expectedRows)
12371237

12381238
got, err := mock.(*sqlmock).Prepare(query)
12391239
if err != nil {
@@ -1326,7 +1326,7 @@ func Test_sqlmock_Query(t *testing.T) {
13261326
}
13271327
defer db.Close()
13281328
expectedRows := mock.NewRows([]string{"id", "name", "email"}).AddRow(1, "test", "[email protected]")
1329-
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WillReturnRows(expectedRows)
1329+
mock.ExpectQuery("SELECT (.+) FROM users WHERE (.+)").WithArgs("test").WillReturnRows(expectedRows)
13301330
query := "SELECT name, email FROM users WHERE name = ?"
13311331
rows, err := mock.(*sqlmock).Query(query, []driver.Value{"test"})
13321332
if err != nil {

0 commit comments

Comments
 (0)