用玩笑/打字稿模拟 mailgun.js

问题描述 投票:0回答:0

我的项目中有这个 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 可以使用它

typescript jestjs mocking mailgun
© www.soinside.com 2019 - 2024. All rights reserved.