Here is my test function. I updated the mocked data, but it's returning the not updated version.
`func TestSample(t *testing.T){
db, mock, err := sqlmock.New()
if err != nil {
t.Errorf("failed to open sqlmock database: %v", err)
}
defer db.Close()
testRows := sqlmock.NewRows([]string{"user","password"}).
AddRow("mike", "m123").
AddRow("chris", "c123")
mock.ExpectBegin()
mock.ExpectPrepare("UPDATE zebra SET user='mike'").ExpectExec().WillReturnResult(sqlmock.NewResult(0,1))
mock.ExpectCommit()
mock.ExpectQuery("SELECT (.+) FROM zebra *").WillReturnRows(testRows)
tx, err := db.Begin()
if err != nil {
fmt.Printf("Something went wrong in begin: %v", err)
}
sql := "UPDATE zebra SET user='mike' WHERE user='test'"
stmt, err := tx.Prepare(sql)
if err != nil {
fmt.Printf("Something went wrong in begin: %v", err)
}
defer stmt.Close()
_, err = stmt.Exec()
if err != nil {
tx.Rollback()
fmt.Printf("Something went wrong in begin: %v", err)
}
err = tx.Commit()
if err != nil {
fmt.Printf("Something went wrong in begin: %v", err)
}
rows, err := db.Query("SELECT * FROM zebra")
if err != nil {
fmt.Printf("Not exepecting error: %v", err)
}
defer rows.Close()
var (
user string
password string
)
for rows.Next() {
err := rows.Scan(&user, &password)
if err != nil {
fmt.Println(err)
}
fmt.Println(user, password)
}
err = rows.Err()
if err != nil {
fmt.Println(err)
}
err = mock.ExpectationsWereMet()
if err != nil {
fmt.Printf("Unit test failed %v", err)
}
Here is my test function. I updated the mocked data, but it's returning the not updated version. `func TestSample(t *testing.T){ db, mock, err := sqlmock.New() if err != nil { t.Errorf("failed to open sqlmock database: %v", err) } defer db.Close()
}`