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 https://github.com/lovoo/protoc-gen-go-grpcmock/releases/latest -H "Accept: application/json" | jq -r .tag_name)
$ curl -fsSL "https://github.com/lovoo/protoc-gen-go-grpcmock/releases/download/${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.21+).
$ git clone https://github.com/lovoo/protoc-gen-go-grpcmock && 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 \
examples/helloworld/helloworld.proto
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.