【问题标题】:How do I test my handler which require tokens to call data services如何测试需要令牌来调用数据服务的处理程序
【发布时间】:2021-12-15 23:41:52
【问题描述】:

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

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

【问题讨论】:

    标签: unit-testing go testcase


    【解决方案1】:

    我的建议是首先尝试抽象您发送到方法的输入

    喜欢而不是这个

    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/

    【讨论】:

      【解决方案2】:

      如果服务在没有令牌的情况下无法运行,您必须提供一个。

      如果由于某种原因在真实目标系统上看不到您将要执行的调用,则需要使用不同的目标系统进行测试。

      • 询问供应商是否有可以使用的测试安装。
      • 考虑针对模拟进行测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        相关资源
        最近更新 更多