我知道可以为此使用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();
});
}