0

嗨,我有一个简单的应用程序,它有一个 gRPC 方法,它可以按预期工作,但是我不知道如何正确集成测试它。(我也是生锈的新手)。即我想调用 gRPC add_merchant 方法并检查响应是否包含正确的值。

我有以下结构:

app
  proto
    merchant.proto
  src
    main.rs
    merchant.rs
  tests
    merchant_test.rs
  build.rs
  Cargo.toml

商人.proto

syntax = "proto3";
package merchant;

service MerchantService {
  rpc AddMerchant (Merchant) returns (Merchant);
}

message Merchant {
  string name = 1;
}

商人.rs

mod merchant;

use merchant::merchant_service_server::MerchantServiceServer;
use merchant::MerchantServiceImpl;
use tonic::transport::Server;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let addr = "127.0.0.1:50051".parse()?;
    let merchant = MerchantServiceImpl::default();

    Server::builder()
        .add_service(MerchantServiceServer::new(merchant))
        .serve(addr)
        .await?;

    Ok(())
}

main.rs

use tonic::{Request, Response, Status};
use crate::merchant::merchant_service_server::MerchantService;

tonic::include_proto!("merchant");

#[derive(Debug, Default)]
pub struct MerchantServiceImpl {
}

#[tonic::async_trait]
impl MerchantService for MerchantServiceImpl {
    async fn add_merchant(&self, request: Request<Merchant>) -> 
Result<Response<Merchant>, Status> {
       let response = Merchant {
           name: "name".to_string()
       };

       Ok(Response::new(response))
   }
}

Mercer_test.rs 应该是什么样子?

4

0 回答 0