首页 > 解决方案 > 如何模拟 DescribeClusterOutput

问题描述

我编写了一个与 EMR 服务交互的代码,它基于 clusterId 将返回集群状态。我正在尝试对其进行单元测试,但我无法弄清楚。

代码:

func (hc *HandlerConfig) Handler(c entities.Cluster) (string, error) {
    clusterID := aws.String(c.ClusterID)

    clusterDetails, err := hc.EMRClient.DescribeCluster(&emr.DescribeClusterInput{ClusterId: clusterID})
    if err != nil {
        return "error", err
    }

    clusterStatus := *clusterDetails.Cluster.Status.State

    return fmt.Sprintf(clusterStatus), nil
}

单元测试代码:

func TestHandler(t *testing.T) {
    emrClient := new(emrtestutils.MockEMR)
    hc := HandlerConfig{
        EMRClient: emrClient,
    }

    input := &emr.DescribeClusterInput{ClusterId: aws.String("j-dfdslkj3kl213kj")}

    // I'M STUCK HERE
    output := &emr.DescribeClusterOutput{
        Cluster
    }

    emrClient.On("DescribeCluster", input).Return(*output.Status.State)
    res, err := hc.Handler(entities.Cluster{ClusterID: "j-dfdslkj3kl213kj"})

    assert.NoError(t, err)
    emrClient.AssertExpectations(t)
    assert.Equal(t, res, output)

}

我想提供 DescribeClusterOutput 的模拟值。

链接:https ://docs.aws.amazon.com/sdk-for-go/api/service/emr/#EMR.DescribeCluster

标签: gomockingamazon-emraws-sdk-go

解决方案


推荐阅读