From 841a58886e8f536ce5a546774f60d3da9f44d14b Mon Sep 17 00:00:00 2001 From: moyin <244344649@qq.com> Date: Thu, 25 Dec 2025 20:40:27 +0800 Subject: [PATCH] =?UTF-8?q?test=EF=BC=9A=E6=B7=BB=E5=8A=A0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=AA=8C=E8=AF=81=E7=A0=81=E9=82=AE=E4=BB=B6=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为修复的登录验证码邮件模板功能添加专门的测试用例: - 测试登录验证码邮件发送功能 - 验证邮件模板内容包含正确的登录验证码信息 - 确保邮件主题和内容符合预期 --- src/core/utils/email/email.service.spec.ts | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/core/utils/email/email.service.spec.ts b/src/core/utils/email/email.service.spec.ts index 1cbbf59..1208760 100644 --- a/src/core/utils/email/email.service.spec.ts +++ b/src/core/utils/email/email.service.spec.ts @@ -221,6 +221,30 @@ describe('EmailService', () => { ); }); + it('应该成功发送登录验证码', async () => { + const options: VerificationEmailOptions = { + email: 'test@example.com', + code: '789012', + nickname: '测试用户', + purpose: 'login_verification' + }; + + mockTransporter.sendMail.mockResolvedValue({ messageId: 'test-id' }); + configService.get.mockReturnValue('"Test Sender" '); + + const result = await service.sendVerificationCode(options); + + expect(result.success).toBe(true); + expect(result.isTestMode).toBe(false); + expect(mockTransporter.sendMail).toHaveBeenCalledWith( + expect.objectContaining({ + to: 'test@example.com', + subject: '【Whale Town】登录验证码', + text: '您的验证码是:789012,5分钟内有效,请勿泄露给他人。' + }) + ); + }); + it('应该在发送失败时返回false', async () => { const options: VerificationEmailOptions = { email: 'test@example.com', @@ -323,6 +347,26 @@ describe('EmailService', () => { await service.sendVerificationCode(options); }); + it('应该生成包含验证码的登录验证模板', async () => { + const options: VerificationEmailOptions = { + email: 'test@example.com', + code: '789012', + nickname: '测试用户', + purpose: 'login_verification' + }; + + mockTransporter.sendMail.mockImplementation((mailOptions: any) => { + expect(mailOptions.html).toContain('789012'); + expect(mailOptions.html).toContain('测试用户'); + expect(mailOptions.html).toContain('登录验证码'); + expect(mailOptions.html).toContain('您正在使用验证码登录'); + expect(mailOptions.html).toContain('🔐'); + return Promise.resolve({ messageId: 'test-id' }); + }); + + await service.sendVerificationCode(options); + }); + it('应该生成包含用户昵称的欢迎邮件模板', async () => { mockTransporter.sendMail.mockImplementation((mailOptions: any) => { expect(mailOptions.html).toContain('测试用户');