我在对 go 中的 gRPC 服务进行单元测试时遇到了困难。
我查看了测试 gRPC 服务,但它对我不起作用,不确定我做错了什么。
Add 方法的 gRPC 服务实现:
type server struct{}
func main() {
listener, err := net.Listen("tcp", ":4040")
if err != nil {
panic(err)
}
srv := grpc.NewServer()
service.RegisterMathOpServiceServer(srv, &server{})
reflection.Register(srv)
if e := srv.Serve(listener); e != nil {
panic(e)
}
fmt.Println("Service is running on localhost:4040")
}
func (s *server) Add(ctx context.Context, request *service.AddRequest)
(*service.AddResponse, error) {
a, b := request.GetX(), request.GetY()
result := a + b
return &service.AddResponse{Answer: result}, nil
}
Add 方法的单元测试:
package test
import (
"context"
pb "mathOp_service/src/service"
"testing"
)
func TestAddition(t *testing.T) {
s := server{} <-- error occurs here
req := pb.AddRequest{X: int64(1), Y: int64(2)}
res, err := s.Add(context.Background(), req)
if res.Answer != 3 {
t.Error("Expected 1 + 2 to equal 3")
}
}
s := server{}
抛出一个错误说undefined: server
。
我很陌生Go
,无法找到解决此问题的解决方案。