Node.JS:在 Jest 中每次测试后刷新 nodemailer-mock
Node.JS: Refreshing the nodemailer-mock after each test in Jest
我正在使用 Express.js 框架构建一个 Node JS 应用程序。我的应用程序正在使用 nodemailer 包发送电子邮件,https://nodemailer.com/about/. I am writing test using supertest and Jest. I am using nodemailer-mock package, https://www.npmjs.com/package/nodemailer-mock 来模拟我的应用程序。
我可以模拟 nodemailer-mock 文档中提到的为 Jest 发送电子邮件的逻辑。唯一的问题是它不会在每次测试后重置数据/计数。例如,我有两个测试,都在发送电子邮件,当我执行以下断言时,它失败了。
const sentEmails = mock.getSentMail();
// there should be one
expect(sentEmails.length).toBe(1);
它失败了,因为在之前的测试中发送了一封电子邮件。我该如何重置它?
假设您的 mock
变量是在模块级别设置(甚至导入)的,这应该涵盖它:
afterEach(() => {
mock.reset();
});
请记住,此方法似乎还会重置您在模拟上配置的任何其他内容(成功响应、失败响应等),因此您可能也需要每次都执行该设置。这非常适合 beforeEach
块。
我正在使用 Express.js 框架构建一个 Node JS 应用程序。我的应用程序正在使用 nodemailer 包发送电子邮件,https://nodemailer.com/about/. I am writing test using supertest and Jest. I am using nodemailer-mock package, https://www.npmjs.com/package/nodemailer-mock 来模拟我的应用程序。
我可以模拟 nodemailer-mock 文档中提到的为 Jest 发送电子邮件的逻辑。唯一的问题是它不会在每次测试后重置数据/计数。例如,我有两个测试,都在发送电子邮件,当我执行以下断言时,它失败了。
const sentEmails = mock.getSentMail();
// there should be one
expect(sentEmails.length).toBe(1);
它失败了,因为在之前的测试中发送了一封电子邮件。我该如何重置它?
假设您的 mock
变量是在模块级别设置(甚至导入)的,这应该涵盖它:
afterEach(() => {
mock.reset();
});
请记住,此方法似乎还会重置您在模拟上配置的任何其他内容(成功响应、失败响应等),因此您可能也需要每次都执行该设置。这非常适合 beforeEach
块。