我正在尝试对涉及调用AWS SES服务的一些代码进行单元测试。
以下是相关代码:
const AWS = require('aws-sdk');
const send = function(options) {
const SES = new AWS.SES();
return new Promise((resolve, reject) => {
// clipped for brevity
SES.sendEmail(sesOpts, (error, data) => {
return error ? reject(error) : resolve(data);
});
});
}
module.exports = send;
这是一个测试,用Mocha运行:
let SESMock = function() {};
SESMock.prototype.sendEmail = sinon.stub();
const emailHelper = proxyquire('../../src/helpers/email', {
'aws-sdk': {
SES: SESMock,
},
});
it('should call sendEmail', (done) => {
const opts = {}; // imagine this has the mail sending options
emailHelper.send(opts).then(() => {
assert(SESMock.prototype.sendEmail.called);
done();
})
.catch((error) => {
console.error(error);
done();
});;
});
不知何故,尽管done()
和then()
回调中都包含catch()
,但测试每次都会超时。我非常期待这与我的存根设置有关,我想我已经多次这样做了,我已经完全失去了方向。
有人能按我正确的方向解决这个问题吗?
由于
答案 0 :(得分:0)
SESMock.prototype.sendEmail = sinon.stub().yields();