Unit testing 对mock(gomock)gRPC的意外调用
我有一个gRPC服务(比如svc1),它调用另一个gRPC服务,使用它的gRPC存根(比如svc2_客户端) 我已经为svc2_客户端生成了客户端模拟。根据文档进行的单元测试工作正常,即使用生成的模拟测试svc2_客户端 但是,我有如下所示的svc1:Unit testing 对mock(gomock)gRPC的意外调用,unit-testing,go,grpc,grpc-go,gomock,Unit Testing,Go,Grpc,Grpc Go,Gomock,我有一个gRPC服务(比如svc1),它调用另一个gRPC服务,使用它的gRPC存根(比如svc2_客户端) 我已经为svc2_客户端生成了客户端模拟。根据文档进行的单元测试工作正常,即使用生成的模拟测试svc2_客户端 但是,我有如下所示的svc1: // Synonymous to proto service generated. type Svc1 struct { rt svc2pb.Svc2Client } // Constructor to get Service. fun
// 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)
围棋新手,你能帮帮我吗
其他信息:
- gomock模式(源):源
- gomock版本或git参考:github.com/golang/mock v1.4.3
- golang版本:go版本go1.14达尔文/amd64
crankingCircuit.EXPECT().RotateShaft().Return(nil).Times(2)
告诉mock_客户端期望调用函数RotateShaft
根据API的不同,您必须更改mock函数中的输入参数和输出参数。在这种情况下,我忘了调用
mock()
函数
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.mock(tt.input)
s := NewServiceServer(dbObject, queueObject)
_, err := s.ListConstraint(ctx, tt.input)
if (err != nil) != tt.isErr {
t.Errorf("ServiceServer.ListC() error = %v, wantErr %v", err, tt.isErr)
return
}
})
}
你说“根据文档进行的单元测试工作正常”,但你说“期望它成功”,所以有些东西工作不正常。请您提供更多关于哪些有效,哪些无效的详细信息?另外,请提供重现该行为的步骤。复制步骤不是错误跟踪(这也很有用)。复制步骤是指其他人重新创建您看到的相同错误的指示。抱歉,我不清楚-正在工作-何时通过在客户端模拟上生成测试来验证客户端模拟。不工作-如上所述,即当服务必须调用grpc客户端存根(模拟)时。此服务上的单元测试失败,而直接在客户端存根上的单元测试工作正常。您找到方法了吗?让我们知道这里。我被同样的问题困住了。