unit-testing - GoLang Sarama ConsumerGroup 模拟
问题描述
我是 Go 新手,我也在努力模拟这个电话:sarama.NewConsumerGroup(brokers, group, config)
我正在使用 testify,我的模拟代码目前看起来像:
type MyMockedObjectReciever struct {
mock.Mock
Receiver
}
func (m *MyMockedObjectReciever) mockCreateConsumer(brokers []string, group string, config *sarama.Config) (sarama.ConsumerGroup, error) {
args := m.Called(brokers, group, config)
return args.Get(0).(sarama.ConsumerGroup), args.Error(1)
}
// mock connection and subscribe
wantConsumer := sarama.NewConsumerGroup
createConsumer = c.mockCreateConsumer
c.On("mockCreateConsumer", []string{testBrokers}, testGroup, wantConfig).Return(wantConsumer, nil).Once()
但我得到了错误:
--- FAIL: TestKafkaReceiver (0.00s)
--- FAIL: TestKafkaReceiver/test_a_Kafka_receiver (0.00s)
panic: interface conversion: func([]string, string, *sarama.Config) (sarama.ConsumerGroup, error) is not sarama.ConsumerGroup: missing method Close [recovered]
panic: interface conversion: func([]string, string, *sarama.Config) (sarama.ConsumerGroup, error) is not sarama.ConsumerGroup: missing method Close
我相信我错误地嘲笑了电话,但现在确定还能做什么。
解决方案
您可以像下面这样编写您的模拟消费者,这将满足消费者组对象。
// Consumergroup handler
type testConsumerGroupHandler struct {
}
func (C testConsumerGroupHandler) Consume(ctx context.Context, topics []string, handler sarama.ConsumerGroupHandler) error {
return nil
}
func (C testConsumerGroupHandler) Errors() <-chan error {
return nil
}
func (C testConsumerGroupHandler) Close() error {
return nil
}
之后,您应该编写成功和失败的方法,并相应地设置模拟测试
推荐阅读
- python - 为matplotlib python中的每个值分配不同的颜色
- swift - 使用 UUID 的 Swift 5 CoreData 谓词
- node.js - NestJS:如何处理自定义导向器错误
- python - 如何在python模块中导入图形
- python - 安装 pyspark 后 Jupyter 笔记本无法运行
- node.js - NodeJS + MongoDB:insertOne() - 从 result.ops 中获取插入的文档
- html - 百里香背景图片
- node.js - 如何正确地只允许使用 Mongoose 在 MongoDB 中访问用户帐户的文档
- microsoft-graph-api - 如何使用 API 将 CSV 文件上传到 Onedrive
- azure-data-factory-2 - 为什么 ADF 的复印活动如此缓慢并最终超时