...
1 package sqlmock
2
3 import (
4 "database/sql/driver"
5 "testing"
6 "time"
7 )
8
9 type AnyTime struct{}
10
11
12 func (a AnyTime) Match(v driver.Value) bool {
13 _, ok := v.(time.Time)
14 return ok
15 }
16
17 func TestAnyTimeArgument(t *testing.T) {
18 t.Parallel()
19 db, mock, err := New()
20 if err != nil {
21 t.Errorf("an error '%s' was not expected when opening a stub database connection", err)
22 }
23 defer db.Close()
24
25 mock.ExpectExec("INSERT INTO users").
26 WithArgs("john", AnyTime{}).
27 WillReturnResult(NewResult(1, 1))
28
29 _, err = db.Exec("INSERT INTO users(name, created_at) VALUES (?, ?)", "john", time.Now())
30 if err != nil {
31 t.Errorf("error '%s' was not expected, while inserting a row", err)
32 }
33
34 if err := mock.ExpectationsWereMet(); err != nil {
35 t.Errorf("there were unfulfilled expectations: %s", err)
36 }
37 }
38
39 func TestByteSliceArgument(t *testing.T) {
40 t.Parallel()
41 db, mock, err := New()
42 if err != nil {
43 t.Errorf("an error '%s' was not expected when opening a stub database connection", err)
44 }
45 defer db.Close()
46
47 username := []byte("user")
48 mock.ExpectExec("INSERT INTO users").WithArgs(username).WillReturnResult(NewResult(1, 1))
49
50 _, err = db.Exec("INSERT INTO users(username) VALUES (?)", username)
51 if err != nil {
52 t.Errorf("error '%s' was not expected, while inserting a row", err)
53 }
54
55 if err := mock.ExpectationsWereMet(); err != nil {
56 t.Errorf("there were unfulfilled expectations: %s", err)
57 }
58 }
59
View as plain text