Как издеваться над DescribeClusterOutput - PullRequest
0 голосов
/ 04 ноября 2019

Я написал код, который будет взаимодействовать со службой 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

...