go - 如何模拟 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
解决方案
推荐阅读
- c# - 向我的 Azure 服务总线队列添加消息不会返回任何值
- testing - 测试后清理数据
- java - 正在写入时无法从服务器读取
- javascript - 减少 Bootstrap 4 Card Z-index 小于 table thead
- c# - 使用linq将列表结果转换为数据表?
- c++-cli - c++ cli 跟踪引用错误
- reactjs - 如何使用 JEST 在 React 中测试以下组件
- xslt - 根据子元素过滤记录
- python-3.x - EDAMUserException(错误代码=2,参数='Note.guid')
- oracle - Hibernate CriteriaQuery,基于时间戳获取