我有一个我想测试的函数:
var mailServerOptions = {....};
var transporter = nodemailer.createTransport(mailServerOptions);
exports.sendTemplateEmail = (to, template, data) => {
var mailOptions = {....}
return new Promise((resolve, reject) => {
transporter.sendMail(mailOptions, (err, result) => {
if (err) {
return reject(err)
}
return resolve(result);
});
});
}
如何在这种情况下将运输工具存根。我找到了这篇文章,但它真的不适合我要做的事情。
我可以将发送零件移至其自己的功能和存根,如果我确实必须这样做,但是如果我不必走那条路,那就太好了。
此示例对我来说很好
=====================
// SOME CODE HERE
transporter.sendMail(mailOptions, (err, info) => {
// PROCESS RESULT HERE
});
============ myfile.spec.js(单位测试文件)========
const sinon = require('sinon');
const nodemailer = require('nodemailer');
const sandbox = sinon.sandbox.create();
descript('XXX', () => {
it('XXX', done => {
const transport = {
sendMail: (data, callback) => {
const err = new Error('some error');
callback(err, null);
}
};
sandbox.stub(nodemailer, 'createTransport').returns(transport);
// CALL FUNCTION TO TEST
// EXPECT RESULT
});
});