Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 2.26 KB

README.md

File metadata and controls

55 lines (38 loc) · 2.26 KB

protoc-gen-go-grpcmock

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

Installation

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

Usage

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

Options

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

Examples can be found in the examples directory.

License

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