Подавление зависимостей, необходимых в модуле - PullRequest
0 голосов
/ 11 июня 2019

Я знаю, что для этого можно использовать 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();
    });
}
...