我有以下测试:
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,其结果相同。
我在做什么错?
回答了我自己的问题:aws-sdk
调用需要传递一个具有正确属性的对象。工作示例:
putMetricData
如果您不传递任何方法或空对象,则它将失败。