Testing Emails with Vitest
Write clean, zero-network unit tests using @mailport/testing:
import { describe, expect, it } from 'vitest';
import { InMemoryTransport, createTestMailer } from '@mailport/testing';
describe('Password Reset Notification', () => {
it('captures password reset token email', async () => {
const transport = new InMemoryTransport();
const mailer = createTestMailer({ transport });
await mailer.send({
from: 'auth@example.com',
to: 'user@example.com',
subject: 'Reset Password',
text: 'Your reset code is 123456.',
});
expect(transport.inbox.count).toBe(1);
const msg = transport.inbox.latest();
expect(msg?.subject).toBe('Reset Password');
expect(msg?.text).toContain('123456');
});
});