3

私は初めてで、テストをいじり始めました。私のメソッドは、md5 ハッシュを含む []byte を返します。

func myHash(s string) []byte {
    h := md5.New()
    io.WriteString(h, s)
    return h.Sum(nil)
}

それは機能しており、ハッシュは問題ないように見えますが、この方法でテストしているとき:

func TestMyHash(t *testing.T) {
    s := "linux"
    bf := ("e206a54e97690cce50cc872dd70ee896")
    x := hashor(s)
    if !bytes.Equal(x, []byte(bf)) {
        t.Errorf("myHash ...")
    }
}

それは常に失敗します。最初は、文字列を [] バイトに、またはその逆にキャストする際に問題が発生する可能性があると考えましたが、何度も何度も試した後、ここで質問する必要があります。

私の機能をテストする方法の例を教えてください。必要なものを見逃していますか?

前もって感謝します。

4

1 に答える 1

6

おそらく、ハッシュの生のバイトを、ハッシュの 16 進形式のバージョンと比較しています。次のようなことをしたいかもしれません:

got := fmt.Sprintf("%034x", myHash("linux"))
want := "00e206a54e97690cce50cc872dd70ee896"
if got != want {
    t.Errorf("got %q, want %q", got, want) 
}
于 2013-08-16T14:33:16.947 に答える