package mailx_test import ( "context" "sync" mailx "code.yun.ink/pkg/mailx" ) // mockSender 记录收到的消息与注入的 logger,用于测试 Manager,不产生真实网络请求 type mockSender struct { name string err error // 非 nil 时 Send 返回该错误 mu sync.Mutex msgs []*mailx.Message logger mailx.Logger } func newMockSender(name string) *mockSender { return &mockSender{name: name} } func (m *mockSender) Name() string { return m.name } func (m *mockSender) Send(ctx context.Context, msg *mailx.Message) error { m.mu.Lock() defer m.mu.Unlock() m.logger = mailx.LoggerFromContext(ctx) if m.err != nil { return m.err } m.msgs = append(m.msgs, msg) return nil } func (m *mockSender) count() int { m.mu.Lock() defer m.mu.Unlock() return len(m.msgs) } func (m *mockSender) lastLogger() mailx.Logger { m.mu.Lock() defer m.mu.Unlock() return m.logger } var _ mailx.Sender = (*mockSender)(nil)