Files
mailx/mock_test.go
2026-08-15 01:38:05 +08:00

50 lines
949 B
Go

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)