我的项目中有这个 emailService 模块:
import config from "../config";
import formData from "form-data";
import Mailgun from "mailgun.js";
import MailOptions from "../@types/MailOptions";
const mailgun = new Mailgun(formData);
const mg = mailgun.client({
username: "api",
key: config.mailApiKey,
url: config.mailApiUrl,
});
export const sendMail = (mailOptions: MailOptions): Promise<unknown> => {
return new Promise((resolve, reject) => {
mg.messages
.create(config.mailDomain, mailOptions)
.then((msg) => resolve(msg))
.catch((err) => reject(err));
});
};
export const setMailOptions = (
recipientEmail: string,
subject: string,
body: string
): MailOptions => {
const mailOptions: MailOptions = {
from: config.senderEmail,
to: recipientEmail,
subject: subject,
html: body,
};
return mailOptions;
};
通常我将这个 emailService.ts 导入到我想发送电子邮件的任何其他模块中。
我正在尝试弄清楚如何测试 emailService 中的 sendMail(),并断言调用了 mg.messages.create()。
我觉得我需要重构这段代码,以便我可以模拟 emailService 使用的配置值和 Mailgun 实例,除非有另一种方法可以在测试套件中模拟 Mailgun,使 emailService 可以使用它