如何测试需要令牌才能调用数据服务的处理程序

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/