猿问

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

这是在处理程序中编写的代码,它获取调用数据服务所需的令牌。


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)",

    })

}


慕慕森
浏览 169回答 2
2回答

幕布斯6054654

我的建议是首先尝试抽象您发送到方法的输入喜欢而不是这个userToken, err := h.getBearer(req.Headers)您可以传递指定的接口,例如type userTokenInput struct {}uti := userTokenInput{} userToken, err := h.getBearer(uti)以上帮助您控制输入,从而使测试更容易对于网络调用,请尝试使用一些可以返回预期数据的模拟 HTTP 客户端,您可以按照此模拟 HTTP 客户端https://www.thegreatcodeadventure.com/mocking-http-requests-in-golang/

GCT1015

如果服务在没有令牌的情况下无法运行,则您必须提供一个。如果出于某种原因在真实目标系统上看不到您将要执行的调用,则您将需要一个不同的目标系统进行测试。询问供应商是否有您可以使用的测试安装。考虑针对模拟进行测试。
随时随地看视频慕课网APP

相关分类

Go
我要回答