У меня есть код, который использует модуль nodemailer .
В маршрутизаторе (router.js) у меня есть
const transporter = nodeMailer.createTransport(emailArgs);
Затем внутри маршрута (/login
) У меня есть:
...
return transporter.sendMail(mailOptions);
Я пытаюсь протестировать этот маршрут с использованием jest
инфраструктуры тестирования.У меня возникли проблемы с издеванием над sendMail
.Я прочитал этот хороший пост о том, как использовать шутки, но я получаю эту ошибку:
TypeError: Невозможно прочитать свойство 'sendMail' из неопределенного
И действительно, когда я проверяю значение transporter
, оно не определено.
Вот мой тестовый код (который не работает):
import request from "supertest";
import router from "./router";
jest.mock("nodemailer");
describe("", () => {
...
test("", async () => {
// 1 - 200 status code; 2 - check email was sent
expect.assertions(2);
const response = await request(router)
.post("/login")
// global variable
.send({ "email": email })
.set("Accept", "application/json")
.expect("Content-Type", /json/);
// should complete successfully
expect(response.status).toBe(200);
// TODO not sure how to express the expect statement here
});
});
Так что мой вопрос как мне смоделировать метод экземпляра класса, который возвращается модулем ?