Google protocol buffer compiler plugin to generate Mocks for gRPC Services in Go.


Download the latest version from the Release Page. Extract the archive and make sure, the protoc-gen-go-grpcmock binary can be found in your PATH.

For instance:

$ VERSION=$(curl -fsSL -H "Accept: application/json"  | jq -r .tag_name)
$ curl -fsSL "${VERSION}/protoc-gen-go-grpcmock_${VERSION:1}_$(uname -s)_$(uname -m).tar.gz" | tar -xzC /usr/local/bin protoc-gen-go-grpcmock

Or build the protoc-gen-go-grpcmock binary from source (requires Go 1.18+).

$ git clone && cd protoc-gen-go-grpcmock
$ go build -ldflags "-X main.Version=$(git describe --tags)" cmd/protoc-gen-go-grpcmock


Generate code by specifying the --go-grpcmock_out (and optional --go-grpcmock_opt) argument when invoking the protoc compiler.

$ protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    --go-grpcmock_out=. --go-grpcmock_opt=paths=source_relative \

This will generate a *_grpc_mock.pb file for each specified .proto file, containing:

  • Generated Client and Server Mocks for each Service
  • Matchers for all Messages


The following parameters can be provided to change the behaviour of the compiler plugin.

Parameter Default Available Options Description
framework “testify” “testify”, “pegomock” The mocking framework to use.
import_package false true/false Import the file’s Go package. This can be useful if mocks should be generated in a different package, then the original .pb.go files


Examples can be found in the examples directory.


The MIT License (MIT). Please see LICENSE for more information.


View Github