I want to make a unit test 100% coverage but many commands or checks are missed in the unit testing, how do I fix it so that it can be 100% coverage
func (db *Database) SaveBook(id string, url string, username string, email string, password string, data string) error {
sqlStatement := "INSERT INTO book (id, cerator,name_book) VALUES (?, ?, ?)"
stmt, err := db.DB.Prepare(sqlStatement)
if err != nil {
return err
}
result, errExec := stmt.Exec(id, url, username, email, password, data)
if errExec != nil {
return errExec
}
rows, err := result.RowsAffected()
if err != nil {
return err
}
if rows != 1 {
return err
}
return nil
}
and for the unit testing example I use this. what's wrong with this
func TestSavetWsSuccesss(t *testing.T) {
db, mock := NewMock()
repo := data.NewDatabase(db)
query := "INSERT INTO book (id, cerator,name_book) VALUES (?, ?, ?)"
prep := mock.ExpectPrepare(regexp.QuoteMeta(query))
prep.ExpectExec().WithArgs(id,creator,name).WillReturnError(errors.New("sql error"))
}