golang单元测试AWS会话或Emr服务

我写了一个代码,该代码将根据集群ID打印EMR集群状态。但是在进行单元测试时我很难过。

emrinterface.EMR:

type EMR struct {
    Client emriface.EMRAPI
}

func NewEMR() *EMR {
    sess := session.CreateNewSession()
    return &EMR{
        Client: emr.New(sess),}
}

根据群集ID打印群集状态:

func getclusterStatus(e entities.Cluster) (string,error) {
    clusterID := ClusterID(e)

    emrService := emrinterface.NewEMR()
    clusterDetails,err := emrService.Client.Describecluster(&emr.DescribeclusterInput{
        ClusterId: clusterID})
    if err != nil {
        return "error",err
    }

    clusterStatus := *clusterDetails.Cluster.Status.State

    return fmt.Sprintf(clusterStatus),nil
}

主要

func main() {
    lambda.Start(getclusterStatus)
}

单元测试:

func setup() *emrtestutils.MockEMR {
    return &emrtestutils.MockEMR{}
}

func TestgetclusterStatus(t *testing.T) {
    testCases := []struct {
        entities.Cluster
        status string
        err    error
    }{
        {entities.Cluster{ClusterID: "j-dfdslkj3kl213kj"},"STARTING",nil},}

    for _,testCase := range testCases {
        mockEMR := setup()
        mockEMR.On("MockEMRDescribecluster",&emr.DescribeclusterInput{
        ClusterId: aws.String("jdfdslkj3kl213kj")}).Return("STARTING",testCase.err)
        res,err := getclusterStatus(testCase.Cluster)
        fmt.Println(err)
        assert.Equal(t,res,testCase.status)
    }
}
lienzhangyubo 回答:golang单元测试AWS会话或Emr服务

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3169903.html

大家都在问