Skip to content

Support for mocks in tests #137

Open

Description

@chatrasen

Majority of the functions involve calls to functions from external packages which need to be mocked. Adding support for mocks can take gotests to the next level I believe.

e.g. An example function and its generated test can look something like this (pseudocode)

CODE

package A

import B

func fA(in) out{
	...
    resp := B.fB(p1, p2)
    ...
}

TEST

package A

import bmock

func TestfA(t *testing.T) {
	type mockB struct {
		resp   // mock resp of B.fB
		times  // number of times B.fB will be called
	}
	
	testCases := []struct {
		name
		args
		mockB 
		want
	} { // add testcases }

	for _, tc := range testCases {
		t.Run(tc.name, func(t *testing.T) {
			gmc := gomock.NewController(t)
			defer gmc.Finish()

			bStub := bmock.NewMockService(t) // just an example, this is debatable
			bstub.Expect().fB(gomock.Any(), gomock.Any()). // 2 params so 2 gomock.Any()
					Times(tc.mockB.times).
					Return(tc.mockB.resp)

			...... // existing logic follows
		})
	}
}

I would first like to ask whether you have already thought about the feasibility of this idea. If you feel this is possible, I would love to work on this enhancement.

Activity

  1. cweill commented on Feb 22, 2021

    @cweill
    Owner

    Hi @chatrasen, while personally I'm not the biggest fan of mocks (I prefer fakes and stubs), I understand that many Go programmers would love to have this feature. I also see that goland/mock is very popular.

    I will approve a PR introducing this feature, as long as it is disabled by default, and enabled by a flag like --automock='mock', so that we can extend this to use other mocking libraries in the future.

  2. johan-lejdung commented on Mar 9, 2021

    @johan-lejdung

    I'm using mockery and are very interested in trying this package out! It would be amazing to get some generated code with support for mockery mocks as well 🙏

    Following with great interest

  3. Agility6 commented on Nov 11, 2025

    @Agility6

    Hi, how is this feature going?

  4. Agility6 commented on Nov 11, 2025

    @Agility6

    Hi @chatrasen, while personally I'm not the biggest fan of mocks (I prefer fakes and stubs), I understand that many Go programmers would love to have this feature. I also see that goland/mock is very popular.

    I will approve a PR introducing this feature, as long as it is disabled by default, and enabled by a flag like --automock='mock', so that we can extend this to use other mocking libraries in the future.

    Hi! I would like to try to implement this feature

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions