我有一个我想测试的功能:
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);
});
});
}
如何在这种情况下存根transporter.sendMail?我找到了这个post,但它并不适合我想要做的事情。
我可以将发送部分移动到它自己的功能和存根,如果我真的必须这样做,但如果我不必走这条路线会很好。
答案 0 :(得分:0)
此示例适用于我
======== myfile.js ========
// 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
});
});