排除模块中所需的依赖项

时间:2019-06-11 09:38:43

标签: node.js mocha sails.js

我知道可以为此使用DI,但是我正在尽力而为地升级项目。

const nodemailer = require('nodemailer');

module.exports.EmailService = {
  async sendEmail(opts) {
    const transport = nodemailer.createTransport('API-KEY');
    return transport.sendMail(opts)
  }
}
const EmailService = require('./EmailService');

module.exports.ContactService = {
  async notify(user) {
    const data = getData(user);
    return Promise.all([
      EmailService.sendEmail(data),
      OtherService.sendText(data),
    ]);
  }
}

这是代码的简单外观,现在我想在nodemailer上保留一个函数。 以前可以使用,但是将我的应用程序升级到较新的版本后将无法使用

所以我的问题是:这可能吗,还是节点缓存/加载模块以使其不可能/不可靠?

const nodemailer = require('nodemailer');

describe.only('#ContactService()', function() {
    this.beforeEach(() => {
      sendMailStub = sinon.stub().callsArg(1);
      const transport = { sendMail: sendMailStub };
      sinon.stub(nodemailer, 'createTransport').returns(transport);
    });

    this.afterEach(() => {
      nodemailer.createTransport.restore();
    });
}

0 个答案:

没有答案