为 gRPC 客户端创建接口以进行单元测试

Ste*_*ger 5 c# unit-testing .net-core grpc grpc-dotnet

我有一个带有生成的 gRPC 客户端的 dotnet core 3 控制台应用程序项目(使用下面 csproj 中的 Protobuf 元素)。我想对我的代码进行单元测试。有没有办法生成我的 gRPC 客户端以包含生成的类的接口,以便我可以正确模拟 gRPC 客户端?

感谢您的时间!

<ItemGroup>
    <Protobuf Include="..\..\Data\Protos\*" GrpcServices="Client" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

Fra*_*cis 4

谷歌的人决定不再包含接口(他们曾经生成过一个点)。

他们引用的主要原因是接口无法维持底层 protobuf 所需的向后/向前兼容性。如果更改接口,这将破坏构建以及与先前构建的任何兼容性。

你可以在这里读更多关于它的内容。

至于测试生成的抽象类,您可以使用 Moq 等模拟框架来测试它,但听起来您很可能已经意识到这一点。如果没有,这里有一个例子。