嗨,我有一个简单的应用程序,它有一个 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 应该是什么样子?