在NodeJS中对AWS模拟进行故障排除

问题描述 投票:1回答:1

我有以下测试:

const AWSMock = require('aws-sdk-mock');
const AWS = require('aws-sdk');
const sinon = require('sinon');

function sendMetric() {
    const cloudwatch = AWS.CloudWatch();
    cloudwatch.putMetricData();
}

describe('Meh', () => {

    it('meh', () => {
        let sendMetricSpy = sinon.spy();
        AWSMock.mock('CloudWatch', 'putMetricData', sendMetricSpy);
        sendMetric();
        expect(sendMetricSpy.calledOnce).toEqual(true);
    });
});

我希望测试通过,因为我已经完成了the documentation所说的内容。这是我尝试在实际代码中实现的精炼示例。

运行测试的实际输出是:

 FAIL  functions/monitor/__test__/j.test.js
  Meh
    ✕ meh (10ms)

  ● Meh › meh

    expect(received).toEqual(expected) // deep equality

    Expected: true
    Received: false

      14 |         AWSMock.mock('CloudWatch', 'putMetricData', sendMetricSpy);
      15 |         sendMetric();
    > 16 |         expect(sendMetricSpy.calledOnce).toEqual(true);
         |                                          ^
      17 |     });
      18 | });
      19 | 

我不知道如何进一步解决此问题。

我也尝试过setting the aws-sdk object explicity,其结果相同。

我在做什么错?

node.js jestjs aws-sdk sinon aws-sdk-mock
1个回答
1
投票

回答了我自己的问题:aws-sdk调用需要传递一个具有正确属性的对象。工作示例:

putMetricData

如果您不传递任何方法或空对象,则它将失败。

© www.soinside.com 2019 - 2024. All rights reserved.