Documentation
¶
Overview ¶
Package registrymocks 提供 registry 包 4 个接口(Registrar/Discoverer/Subscriber/ConfigStore) 的统一 mock 实现,供单元测试使用(原为 ekit internal 包,拆分后跨模块复用故公开)。
消除历史散落在 nns/client、kitex/nns、kitex/registry、hertz/registry、hertz/nns 等多个 _test.go 文件中的重复 mock 定义。
设计原则:
- 字段可配置:每个 mock 暴露必要的字段(错误、返回值)用于测试用例
- 线程安全:所有方法都加锁,支持并发测试场景
- 完整实现:覆盖接口的所有方法(不留 panic 默认)
Index ¶
- type ConfigStore
- func (m *ConfigStore) FireChange(dataID, group, newValue string)
- func (m *ConfigStore) GetConfig(_ context.Context, dataID, group string) (string, error)
- func (m *ConfigStore) ListenConfig(_ context.Context, dataID, group string, onChange func(string)) error
- func (m *ConfigStore) ListeningCountFor(dataID, group string) int
- func (m *ConfigStore) SetErr(err error)
- func (m *ConfigStore) StopListenConfig(_ context.Context, dataID, group string) error
- type Discoverer
- type Registrar
- type Subscriber
- func (m *Subscriber) CallbackCount(serviceName string) int
- func (m *Subscriber) Push(serviceName string, instances []registry.Instance)
- func (m *Subscriber) Subscribe(_ context.Context, serviceName string, cb func([]registry.Instance)) error
- func (m *Subscriber) Unsubscribe(_ context.Context, serviceName string) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConfigStore ¶
type ConfigStore struct {
// dataID/group → 配置内容
Configs map[string]string
// GetConfig 默认错误(未命中 Configs 时返回)
Err error
// dataID/group → onChange 回调
Listening map[string]func(string)
// contains filtered or unexported fields
}
ConfigStore 是 registry.ConfigStore 的可配置 mock 实现。
通过 configs map 配置 dataID/group 对应的配置内容; 通过 listening map 跟踪已注册的监听器,可通过 FireChange 模拟配置变更推送。
func (*ConfigStore) FireChange ¶
func (m *ConfigStore) FireChange(dataID, group, newValue string)
FireChange 主动触发指定 dataID/group 的 onChange 回调,模拟配置中心推送。
func (*ConfigStore) ListenConfig ¶
func (m *ConfigStore) ListenConfig(_ context.Context, dataID, group string, onChange func(string)) error
ListenConfig 注册变更监听器。
func (*ConfigStore) ListeningCountFor ¶
func (m *ConfigStore) ListeningCountFor(dataID, group string) int
ListeningCountFor 返回指定 dataID/group 当前注册的监听器数量(1 或 0)。 供测试轮询等待 ListenConfig 完成注册。
func (*ConfigStore) SetErr ¶
func (m *ConfigStore) SetErr(err error)
SetErr 并发安全地更新 GetConfig/ListenConfig 的默认错误(模拟故障注入与恢复)。
func (*ConfigStore) StopListenConfig ¶
func (m *ConfigStore) StopListenConfig(_ context.Context, dataID, group string) error
StopListenConfig 注销监听器。
type Discoverer ¶
type Discoverer struct {
// 默认返回(所有服务都返回这些实例,除非 InstancesMap 覆盖)
Instances []registry.Instance
Err error
// AllInstances / AllErr 是 DiscoverAll 的返回
AllInstances []registry.Instance
AllErr error
// Per-service 覆盖:serviceName → instances
InstancesMap map[string][]registry.Instance
// Per-service 错误:serviceName → error
ErrMap map[string]error
// contains filtered or unexported fields
}
Discoverer 是 registry.Discoverer 的可配置 mock 实现。
支持两种使用模式:
- 简单模式:所有服务返回相同的 Instances / Err
- Per-service 模式:在 InstancesMap 中按服务名配置不同返回值
func (*Discoverer) DiscoverAll ¶
func (m *Discoverer) DiscoverAll(_ context.Context, serviceName string) ([]registry.Instance, error)
DiscoverAll 返回配置的全部实例列表。
type Registrar ¶
type Registrar struct {
Registered []registry.Instance
Deregistered []registry.Instance
RegErr error // Register 返回的错误
DeregErr error // Deregister 返回的错误
// contains filtered or unexported fields
}
Registrar 是 registry.Registrar 的可配置 mock 实现。
用法:
reg := ®istrymocks.Registrar{RegErr: errors.New("register failed")}
err := reg.Register(ctx, registry.Instance{...})
if err == nil { t.Error("expected error") }
func (*Registrar) Deregister ¶
Deregister 记录注销实例并返回配置的 DeregErr。
type Subscriber ¶
type Subscriber struct {
// contains filtered or unexported fields
}
Subscriber 是 registry.Subscriber 的可配置 mock 实现。
支持订阅后通过 Push 手动触发回调,模拟注册中心的推送行为。
func (*Subscriber) CallbackCount ¶
func (m *Subscriber) CallbackCount(serviceName string) int
CallbackCount 返回指定服务注册的回调数量(测试用)。
func (*Subscriber) Push ¶
func (m *Subscriber) Push(serviceName string, instances []registry.Instance)
Push 主动触发指定服务的所有回调,模拟注册中心的实例变更推送。
func (*Subscriber) Subscribe ¶
func (m *Subscriber) Subscribe(_ context.Context, serviceName string, cb func([]registry.Instance)) error
Subscribe 注册回调。
func (*Subscriber) Unsubscribe ¶
func (m *Subscriber) Unsubscribe(_ context.Context, serviceName string) error
Unsubscribe 注销回调。