func GetImagesList() {
conn, err := grpc.Dial(address, grpc.WithInsecure())
if err != nil {
Log.Info("did not connect: %v", err)
}
defer conn.Close()
// Get Client from the grpc connection
client := pb.NewGrpcClient(conn)
resp, err := client.GetImages(context.Background(),
&pb.ImageListRequest{})
}
如何做模拟GetImagesList GRPC方法请帮帮我。 感谢
答案 0 :(得分:3)
这里的部分问题是创建客户端的代码是您尝试使用模拟测试的代码。
使用界面,您可以将模拟传递给您尝试测试的方法/函数。步骤1.将从您要注入模拟的代码中拆分创建客户端的代码。
你应该定义一个你试图模拟的接口,它允许你交换假/模拟版本的实际/真实实现,如:
Dim x as ...
Set x = ...Create(...)
Set PCache = x.CreatePivotTable(...)
然后创建一个新的结构类型,允许您设置模拟/实际实现。
type ImagesGetter interface {
func GetImages(ctx context.Context, in *pb.ImageListRequest) (*pb.ImageListResponse, error)
}
现在,您可以使用模拟实现构建新的type Lister struct {
images ImagesGetter
}
func (l *Lister) GetImagesList() {
// trimmed, but the grpc client should be defined
// and constructed outside this function and passed
// in in the images field of the Lister.
resp, err := l.images.GetImages(ctx, &pb.GetImagesRequest)
// trimmed ..
}
模型:
Lister
并使用它:
type mock struct {}
func (m *mock) GetImages(ctx context.Context, in *pb.ImageListRequest) (*pb.ImageListResponse, error) {
// do mock implementation things here
}