golang/mock

Mock Embedded Interface in the SAME Package

jayaike opened this issue · 3 comments

Actual behavior A clear and concise description of what the bug is.

I tried to mock an embedded struct in the same package as the source file.

Here is my source file

type Service interface {
	AccountsService
	ModulesService
}

When I try to generate the mock file with the auxfiles flag, I still get an error. I've tried different ways to use the auxfiles flag such as --aux_files service=service.go and --aux_files =service.go.

Expected behavior A clear and concise description of what you expected to
happen.

Embedded interfaces in the same package should work

you should put the full path, including package name

Thank you for your reply

you should put the full path, including package name

How to understand? Is there an example?

I did this error

$ mockgen -source=test01.go -destination=test01_mock.go -package=test -aux_files test=/Users/Cat/code-test/golang/go-test/my_test/test02.go
$ 2022/07/26 19:06:45 Loading input failed: test01.go:5:2: unknown embedded interface ServiceExp

But I use go module name to solve it. Like this:

mockgen -source=test01.go -destination=test01_mock.go -package=test -aux_files testDemo/my_test=test02.go

my file layout

.
├── go.mod
├── go.sum
└── my_test
    ├── test01.go
    ├── test01_mock.go
    └── test02.go

go.mod

module testDemo

go 1.18

require github.com/golang/mock v1.6.0

test01.go

package test

type Service interface {
	Get()
	ServiceExp
}

test02.go

package test

type ServiceExp interface {
	Set()
}

oh i meant the package path. For example mine was

github.com/xxxx/services/accounts_service.go