| // +build go1.9 |
| |
| package sqlmock |
| |
| import ( |
| "errors" |
| "testing" |
| ) |
| |
| func TestStatementTX(t *testing.T) { |
| t.Parallel() |
| db, mock, err := New() |
| if err != nil { |
| t.Errorf("an error '%s' was not expected when opening a stub database connection", err) |
| } |
| defer db.Close() |
| |
| prep := mock.ExpectPrepare("SELECT") |
| mock.ExpectBegin() |
| |
| prep.ExpectQuery().WithArgs(1).WillReturnError(errors.New("fast fail")) |
| |
| stmt, err := db.Prepare("SELECT title, body FROM articles WHERE id = ?") |
| if err != nil { |
| t.Fatalf("unexpected error on prepare: %v", err) |
| } |
| |
| tx, err := db.Begin() |
| if err != nil { |
| t.Fatalf("unexpected error on begin: %v", err) |
| } |
| |
| // upgrade connection for statement |
| txStmt := tx.Stmt(stmt) |
| _, err = txStmt.Query(1) |
| if err == nil || err.Error() != "fast fail" { |
| t.Fatalf("unexpected result: %v", err) |
| } |
| } |