wiremock grpc

gRPC mocking to test Rust applications.


Crates.io version Download docs.rs docs


Example

Generate Server Code

For each gRPC server you need to generate codes using the [generate!] macro.

rs mod hello_greeter_mock { // hello.Greeter: Is the prefix of all rpc // MyHelloServer: Arbitrary name of the generated Server wiremock_grpc::generate!("hello.Greeter", MyHelloServer); } use hello_greeter_mock::*; // MyHelloServer, MockBuilder are available to use. // If multiple servers are generated then use the // module identifier eg. `hello_greeter_mock::MyHelloServer`

Use it

```rs

[tokio::test]

async fn handledwhenmockset() { // Server let mut server = MyHelloServer::startdefault().await;

server.setup(
    MockBuilder::when()
        .path("/hello.Greeter/SayHello")
        .then()
        .return_status(Code::Ok)
        .return_body(|| HelloReply {
            message: "Hello Mustakim".into(),
        }),
);

// Client
let channel =
    tonic::transport::Channel::from_shared(format!("http://[::1]:{}", server.address().port()))
        .unwrap()
        .connect()
        .await
        .unwrap();
let mut client = GreeterClient::new(channel);

// Act
let response = client
    .say_hello(HelloRequest {
        name: "Mustakim".into(),
    })
    .await
    .unwrap();

assert_eq!("Hello Mustakim", response.into_inner().message);

} ```