文章目录

前言

在写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()))
}