...
1
2
3 package sqlmock
4
5 import (
6 "context"
7 "testing"
8 )
9
10 func TestCustomValueConverterExec(t *testing.T) {
11 db, mock, _ := New(ValueConverterOption(CustomConverter{}))
12 expectedQuery := "INSERT INTO tags \\(name,email,age,hobbies\\) VALUES \\(\\?,\\?,\\?,\\?\\)"
13 query := "INSERT INTO tags (name,email,age,hobbies) VALUES (?,?,?,?)"
14 name := "John"
15 email := "j@jj.j"
16 age := 12
17 hobbies := []string{"soccer", "netflix"}
18 mock.ExpectBegin()
19 mock.ExpectPrepare(expectedQuery)
20 mock.ExpectExec(expectedQuery).WithArgs(name, email, age, hobbies).WillReturnResult(NewResult(1, 1))
21 mock.ExpectCommit()
22
23 ctx := context.Background()
24 tx, e := db.BeginTx(ctx, nil)
25 if e != nil {
26 t.Error(e)
27 return
28 }
29 stmt, e := db.PrepareContext(ctx, query)
30 if e != nil {
31 t.Error(e)
32 return
33 }
34 _, e = stmt.Exec(name, email, age, hobbies)
35 if e != nil {
36 t.Error(e)
37 return
38 }
39 tx.Commit()
40 if err := mock.ExpectationsWereMet(); err != nil {
41 t.Error(err)
42 }
43 }
44
View as plain text