如何测试需要令牌才能调用数据服务的处理程序
How do I test my handler which require tokens to call data services
这是写在处理程序中的代码,它获取调用数据服务所需的令牌。
m2m, err := h.getM2MToken(ctx)
if err != nil {
return lc.SetResponse(&events.APIGatewayV2HTTPResponse{
StatusCode: http.StatusInternalServerError,
Body: "Internal Server Error (m2m)",
})
}
//Get the bearer token
userToken, err := h.getBearer(req.Headers)
if err != nil {
xray.AddError(ctx, err)
return lc.SetResponse(&events.APIGatewayV2HTTPResponse{
StatusCode: http.StatusInternalServerError,
Body: "Internal Server Error (bearer)",
})
}
如果服务在没有令牌的情况下无法运行,您将必须提供一个。
如果出于某种原因在真实目标系统上看不到您将要执行的调用,您将需要一个不同的目标系统进行测试。
- 询问提供商他们是否有您可以使用的测试安装。
- 考虑针对模拟进行测试。
我的建议是首先尝试抽象化您发送给方法的输入
喜欢而不是这个
userToken, err := h.getBearer(req.Headers)
您可以通过指定接口,如
type userTokenInput struct {}
uti := userTokenInput{}
userToken, err := h.getBearer(uti)
以上帮助您控制输入,使测试更容易
对于网络调用,请尝试使用一些可以 return 预期的模拟 HTTP 客户端
数据你可以按照这个模拟 HTTP 客户端 https://www.thegreatcodeadventure.com/mocking-http-requests-in-golang/
这是写在处理程序中的代码,它获取调用数据服务所需的令牌。
m2m, err := h.getM2MToken(ctx)
if err != nil {
return lc.SetResponse(&events.APIGatewayV2HTTPResponse{
StatusCode: http.StatusInternalServerError,
Body: "Internal Server Error (m2m)",
})
}
//Get the bearer token
userToken, err := h.getBearer(req.Headers)
if err != nil {
xray.AddError(ctx, err)
return lc.SetResponse(&events.APIGatewayV2HTTPResponse{
StatusCode: http.StatusInternalServerError,
Body: "Internal Server Error (bearer)",
})
}
如果服务在没有令牌的情况下无法运行,您将必须提供一个。
如果出于某种原因在真实目标系统上看不到您将要执行的调用,您将需要一个不同的目标系统进行测试。
- 询问提供商他们是否有您可以使用的测试安装。
- 考虑针对模拟进行测试。
我的建议是首先尝试抽象化您发送给方法的输入
喜欢而不是这个
userToken, err := h.getBearer(req.Headers)
您可以通过指定接口,如
type userTokenInput struct {}
uti := userTokenInput{}
userToken, err := h.getBearer(uti)
以上帮助您控制输入,使测试更容易
对于网络调用,请尝试使用一些可以 return 预期的模拟 HTTP 客户端 数据你可以按照这个模拟 HTTP 客户端 https://www.thegreatcodeadventure.com/mocking-http-requests-in-golang/