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