Skip to content

budougumi0617/cmpmock

Folders and files

NameName
Last commit message
Last commit date
Sep 2, 2024
Sep 2, 2024
Apr 18, 2021
Apr 18, 2021
Apr 18, 2021
Sep 4, 2024
Sep 2, 2024
Apr 22, 2021
Sep 2, 2024
Sep 2, 2024

Repository files navigation

cmpmock

Go Reference MIT License test reviewdog

Readable & Flexible matcher for go.uber.org/mock/gomock ( https://github.com/uber-go/mock )

Description

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.Matcher

If DiffEq is set no opts, default behavior ignores a time differences of less than a second.

Readable ouput

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",
}

Usage

type UserRepo interface {
  Save(context.Context, *User) error
}

wantUser := &User{}
mrepo := mock.NewMockUserRepo(ctrl)
mrepo.EXPECT().Save(ctx, cmpmock.DiffEq(wantUser)).Return(nil)

Installation

$ go get -u github.com/budougumi0617/cmpmock

License

MIT

Author

Yocihiro Shimizu(@budougumi0617)