Readable & Flexible matcher for go.uber.org/mock/gomock ( https://github.com/uber-go/mock )
cmpmock provides a simple custom matcher. it is be able to modify behavior with github.com/google/go-cmp/cmp/cmpopts.
import "github.com/google/go-cmp/cmp"
func DiffEq(v interface{}, opts ...cmp.Option) gomock.MatcherIf DiffEq is set no opts, default behavior ignores a time differences of less than a second.
Default output
expected call at /Users/budougumi0617/go/src/github.com/budougumi0617/cmpmock/_example/repo_test.go:26 doesn't match the argument at index 1.
Got: &{John Due Tokyo 2021-04-23 02:46:58.145696 +0900 JST m=+0.000595005}
Want: is equal to &{John Due Tokyo 2021-04-23 02:46:48.145646 +0900 JST m=-9.999455563}
use cmpmock.DiffEq
expected call at /Users/budougumi0617/go/src/github.com/budougumi0617/cmpmock/_example/repo_test.go:27 doesn't match the argument at index 1.
Got: &{John Due Tokyo 2021-04-23 02:46:33.290458 +0900 JST m=+0.001035665}
Want: diff(-got +want) is &_example.User{
Name: "John Due",
Address: "Tokyo",
- CreateAt: s"2021-04-23 02:46:33.290458 +0900 JST m=+0.001035665",
+ CreateAt: s"2021-04-23 02:46:23.290383 +0900 JST m=-9.999039004",
}
type UserRepo interface {
Save(context.Context, *User) error
}
wantUser := &User{}
mrepo := mock.NewMockUserRepo(ctrl)
mrepo.EXPECT().Save(ctx, cmpmock.DiffEq(wantUser)).Return(nil)$ go get -u github.com/budougumi0617/cmpmockYocihiro Shimizu(@budougumi0617)