自动mock grpc服务
众所周知,在编写GRPC服务应用时,需要获取相应的proto文件,生成server、client的打桩代码,借此即可访问服务,同时也能启动服务,但这里会有个问题,就是需要获取到对应的proto文件。我想直接知道对方的请求参数和返回参数,并由此来设定mock值,设定完成后,即可直接请求。
基于以上的需要,进行相应的实现,即可得到所需的效果。
动态获取proto
通过接口获取对应服务proto定义的能力,需要对方服务打开proto 反射。
1 | s := grpc.NewServer() |
Register
其实是注册一个服务,里面就一个函数,可以拿到该proto的所有数据,如同在自己的项目中调用reflection
库一般。
1 | // Register registers the server reflection service on the given gRPC server. |
启动server
启动一个可以接受任何请求的GRPC
服务器,这里做一步如同grpc proxy
的操作,不去注册固定的服务处理函数:
1 | s := grpc.NewServer(grpc.UnknownServiceHandler(func(srv interface{}, stream grpc.ServerStream) error { |
使用
在前端界面上输入目标服务器的地址,获取到其接口和参数,然后填入mock值。
新增的功能:
- 自动生成参数,根据值类型;(像例如
yapi
) - 引入表达式,可以根据表达式对请求参数和返回值做一些灵活操作
- 加入到注册中心,自动mock所有可被mock的服务
参考
本文标题:自动mock grpc服务
文章作者:小师
发布时间:2023-04-01
最后更新:2024-08-18
原始链接:chunlife.top/2023/04/01/自动mock-grpc服务/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可