Clone this repo:



  1. 13f3609 Merge pull request #93 from golang/restore_backwards_compatibility by Hesky Fisher · 3 days ago master v1.0.0
  2. dea6b4f Restore backwards compatibility for controller.RecordCall. by Hesky Fisher · 3 days ago
  3. 6244772 Merge pull request #89 from golang/unexported_methods by Hesky Fisher · 4 days ago
  4. 3006cc2 Merge pull request #90 from pasztorpisti/call_after_fix_and_tests by Hesky Fisher · 4 days ago
  5. 187eaf7 Detect adding 'self' as a prereq in Call.After by pasztorpisti · 4 days ago

gomock Build Status

GoMock is a mocking framework for the Go programming language. It integrates well with Go's built-in testing package, but can be used in other contexts too.


Once you have installed Go, run these commands to install the gomock package and the mockgen tool:

go get
go get


After installing, you can use go doc to get documentation:

go doc

Alternatively, there is an online reference for the package hosted on GoPkgDoc here.

Running mockgen

mockgen has two modes of operation: source and reflect. Source mode generates mock interfaces from a source file. It is enabled by using the -source flag. Other flags that may be useful in this mode are -imports and -aux_files.


mockgen -source=foo.go [other options]

Reflect mode generates mock interfaces by building a program that uses reflection to understand interfaces. It is enabled by passing two non-flag arguments: an import path, and a comma-separated list of symbols.


mockgen database/sql/driver Conn,Driver

The mockgen command is used to generate source code for a mock class given a Go source file containing interfaces to be mocked. It supports the following flags:

  • -source: A file containing interfaces to be mocked.

  • -destination: A file to which to write the resulting source code. If you don't set this, the code is printed to standard output.

  • -package: The package to use for the resulting mock class source code. If you don't set this, the package name is mock_ concatenated with the package of the input file.

  • -imports: A list of explicit imports that should be used in the resulting source code, specified as a comma-separated list of elements of the form foo=bar/baz, where bar/baz is the package being imported and foo is the identifier to use for the package in the generated source code.

  • -aux_files: A list of additional files that should be consulted to resolve e.g. embedded interfaces defined in a different file. This is specified as a comma-separated list of elements of the form foo=bar/baz.go, where bar/baz.go is the source file and foo is the package name of that file used by the -source file.

  • -build_flags: (reflect mode only) Flags passed verbatim to go build.

For an example of the use of mockgen, see the sample/ directory. In simple cases, you will need only the -source flag.

TODO: Brief overview of how to create mock objects and set up expectations, and an example.