更新
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user