0

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"))
}

0 Answers0