节点 - 测试的存根结节器传输



我有一个我想测试的函数:

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
  });
});

最新更新