【发布时间】:2019-07-09 10:52:37
【问题描述】:
我正在关注一些创建双向 grpc 客户端和服务器的教程。客户端将传递一些值,当服务器上的最后一个最大值更改时,它将以当前最大值响应客户端。最后,我想写一些测试用例,但我没有测试场景的经验,这就是为什么我不确定我是否做对了。
func TestClientConnection(t *testing.T) {
creds, _ := credentials.NewClientTLSFromFile("../server-cert.pem", "")
conn, err := grpc.Dial(address, grpc.WithTransportCredentials(creds))
if err != nil {
t.Error("Had problem with connection, NOT PASSED")
}
defer conn.Close()
c := proto.NewHerdiusServerClient(conn)
stream, err := c.CheckMax(context.Background())
if err != nil {
t.Error("Had problem with stream, NOT PASSED")
return
}
err = stream.Send(&proto.MaxRequest{Val: int32(10)})
err = stream.Send(&proto.MaxRequest{Val: int32(12)})
err = stream.Send(&proto.MaxRequest{Val: int32(13)})
err = stream.Send(&proto.MaxRequest{Val: int32(9)})
if err != nil {
t.Error("Had problem with stream, NOT PASSED")
return
}
return
}
现在当我用go test 测试这个场景时它通过了,但我还想测试是否从服务器端收到了一些东西。
我的第二个问题是,如果我想将此测试拆分到不同的场景,例如检查服务器是否连接或流是否连接,或者它是否收到来自服务器端的响应,我该怎么做?我应该创建另一个类来检索连接和流式传输并用于测试功能吗?
【问题讨论】: