gpt4 book ai didi

unit-testing - 意外调用 mock (gomock) gRPC

转载 作者:行者123 更新时间:2023-12-01 20:19:11 25 4
gpt4 key购买 nike

我有 gRPC 服务(比如 svc1)调用另一个 gRPC 服务,使用它的 gRPC stub (比如 svc2_client)。

我已经为 svc2_client 生成了客户端模拟。根据文档进行的单元测试工作正常,即使用生成的模拟测试 svc2_client。

但是,我有如下所示的 svc1:

// Synonymous to proto service generated.
type Svc1 struct {
rt svc2pb.Svc2Client
}

// Constructor to get Service.
func NewSvc1(rt svc2pb.Svc2Client) *Svc1 {
return &Svc1{rt}
}
...
...

预期行为:
期待它成功

复制
重现该行为的步骤:

返回错误:

=== RUN   TestMethod1Svc1

TestMethod1Svc1: svc1.go:40: Unexpected call to *mock_svc2client.MockSvc2Client.Method1([context.Background.WithDeadline(2020-06-22 10:14:25.620736 +0530 IST m=+3.002262784 [2.999757626s]) key1:"1" } ]) at ...server/mocks/svc2client_mock.go:65 because: there are no expected calls of the method "Method1" for that receiver
--- FAIL: TestMethod1Svc1 (0.00s)

Go 新手,你能帮帮我吗?

附加信息:

  • gomock模式(来源):来源
  • gomock 版本或 git ref:github.com/golang/mock v1.4.3
  • golang版本:go版本go1.14 darwin/amd64

最佳答案

您正在尝试调用尚未模拟的函数。

基本上,当您执行 mock_client 并调用其中的函数时,您必须确保这些函数也被模拟。您还必须为模拟函数提供自定义输入和自定义输出。

可以引用这个:gomock-blog

你可以看到这一行 crankingCircuit.EXPECT().RotateShaft().Return(nil).Times(2)告诉 mock_client 期待函数 RotateShaft

的调用

根据 API,您必须更改模拟函数中的输入参数和输出参数。

关于unit-testing - 意外调用 mock (gomock) gRPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62507816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com