-2

Go プログラムに、ハッシュ ID を生成するための単純なパッケージがあります。

私もそのためのテストを書きましたが、なぜステートメントの 83% しかカバーされていないのか理解できません。

以下は私のパッケージ関数コードです:

package hashgen

import (
    "math/rand"
    "time"

    "github.com/speps/go-hashids"
)

// GenHash function will generate a unique Hash using the current time in Unix epoch format as the seed
func GenHash() (string, error) {

    UnixTime := time.Now().UnixNano()
    IntUnixTime := int(UnixTime)

    hd := hashids.NewData()
    hd.Salt = "test"
    hd.MinLength = 30
    h, err := hashids.NewWithData(hd)
    if err != nil {
        return "", err
    }
    e, err := h.Encode([]int{IntUnixTime, IntUnixTime + rand.Intn(1000)})

    if err != nil {
        return "", err
    }

    return e, nil
}

以下は私のテストコードです:

package hashgen

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestGenHash(t *testing.T) {
    hash, err := GenHash()
    if err != nil {
        assert.Error(t, err, "Not able to generate Hash")

    }
    assert.Nil(t, err)
    assert.True(t, len(hash) > 0)
}

coverprofile を使用して Go テストを実行すると、次の部分がテストの対象外であることがわかります。

if err != nil {
        return "", err
    }

何かアドバイス?

4

1 に答える 1