文章目录
前言
在写golang的测试时,我们有时候会遇到比较插入值和数据库存入值是否一致的问题
这时候就可以使用第三方依赖go-cmp来对数据进行对比
安装
go get -u github.com/google/go-cmp/cmp
使用
引入cmp
cmp.Diff(x,y,options)
该方法比较x,y返回string(对不x,y不同点的描述)
如果x,y包含proto生成的struct,则需要设置options = protocmp.Transform()
//cmp_test.go
package text
import (
"fmt"
"github.com/google/go-cmp/cmp"
"google.golang.org/protobuf/testing/protocmp"
"testing"
)
type A struct {
Name string
Age int64
}
func TestCmp(t *testing.T) {
a := A{
Name: "xie_rui_xiang",
Age: 28,
}
b := A{
Name: "xie_rui_xiang",
Age: 28,
}
c := A{
Name: "xie_rui_xiang",
Age: 29,
}
fmt.Println(cmp.Diff(a, b))
fmt.Println(cmp.Diff(b, c))
//如果比较的数据包含proto生成的struct,则需要使用 protocmp.Transform()
//下面是假设a,b包含proto生成的struct
fmt.Println(cmp.Diff(a,b,protocmp.Transform()))
}