【发布时间】:2019-05-21 18:43:19
【问题描述】:
全部
我有一个用 go 编写的服务,它通过 gRPC 协议与其他几个服务通信。我想为我的服务编写集成测试,但是我不可能使用真正的依赖项。
所以,我需要以某种方式模拟依赖项。
对我来说,一个完美的场景是这样的:
- 我可以运行一个模拟服务器并将其地址而不是真正的依赖项传递给我的应用程序
- 我可以注册对依赖服务的特定调用的预期响应
- 我可以重置模拟服务器以在测试用例后删除数据。
我尝试使用https://github.com/jekiapp/gripmock,但它不支持所有 protobuff 语法。
什么可以帮助解决我的问题?也许我完全错了,对于与 gRPC 通信的服务的集成测试有最佳实践
【问题讨论】:
-
您有一项服务要测试。我希望您在测试中使用测试配置启动服务,然后使用客户端(您的测试客户端)向服务发出请求,然后将获得的数据与预期数据进行比较。集成测试的想法不是模拟某些东西,那么它就不再是集成测试了。
-
抱歉术语有误。我需要对我的服务中的业务逻辑进行黑盒测试。问题是我的服务只有几个依赖项,但是这些依赖项需要很多基础设施。把它想象成一个微服务,它只使用单体应用中的一个处理程序
-
大概您可以访问原型定义,对吧?因此,生成服务存根并根据需要实现它们。如果没记错的话,protoc 无论如何都会同时生成客户端和服务器代码,所以你应该已经有了服务器接口。
-
你解决过这个问题吗?也在努力用 gripmock 完成这项工作,并怀疑我正在尝试做的一些事情可能不受支持
-
这能回答你的问题吗? Testing a gRPC service
标签: go mocking integration-testing grpc