我刚开始接触测试。 我的方法返回一个带有 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 或将字符串转换为 []byte 可能存在一些问题,但在一遍又一遍地尝试之后,我只需要在这里问一下。
你能给我一个如何测试我的功能的例子吗?我是否遗漏了一些必要的东西?
提前致谢。
最佳答案
您可能正在将哈希的原始字节与哈希的十六进制格式版本进行比较。你可能想做这样的事情:
got := fmt.Sprintf("%034x", myHash("linux"))
want := "00e206a54e97690cce50cc872dd70ee896"
if got != want {
t.Errorf("got %q, want %q", got, want)
}
关于testing - go中函数的正确测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275191/