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

它总是会失败。首先,我认为将字符串转换为 []byte 可能是一些问题,反之亦然,但在一遍又一遍地尝试之后,我只需要在这里问一下。

你能给我一个如何测试我的功能的例子吗?我错过了一些必要的东西吗?

提前致谢。

4

1 回答 1

6

您可能正在将散列的原始字节与散列的十六进制格式版本进行比较。你可能想做这样的事情:

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 回答