// +build go1.9 package sqlmock import ( "context" "testing" ) func TestCustomValueConverterExec(t *testing.T) { db, mock, _ := New(ValueConverterOption(CustomConverter{})) expectedQuery := "INSERT INTO tags \\(name,email,age,hobbies\\) VALUES \\(\\?,\\?,\\?,\\?\\)" query := "INSERT INTO tags (name,email,age,hobbies) VALUES (?,?,?,?)" name := "John" email := "j@jj.j" age := 12 hobbies := []string{"soccer", "netflix"} mock.ExpectBegin() mock.ExpectPrepare(expectedQuery) mock.ExpectExec(expectedQuery).WithArgs(name, email, age, hobbies).WillReturnResult(NewResult(1, 1)) mock.ExpectCommit() ctx := context.Background() tx, e := db.BeginTx(ctx, nil) if e != nil { t.Error(e) return } stmt, e := db.PrepareContext(ctx, query) if e != nil { t.Error(e) return } _, e = stmt.Exec(name, email, age, hobbies) if e != nil { t.Error(e) return } tx.Commit() if err := mock.ExpectationsWereMet(); err != nil { t.Error(err) } }