gpt4 book ai didi

go - 在 sarama-cluster 中模拟 NewConsumer

转载 作者:IT王子 更新时间:2023-10-29 01:04:37 28 4
gpt4 key购买 nike

有没有办法在不设置实际代理的情况下测试/模拟 sarama-cluster 的 NewConsumer 函数?我在这里缺少什么?

我要测试的代码:

import cluster "github.com/bsm/sarama-cluster"

func initSaramaConsumer() (*cluster.Consumer, error) {
brokers := []string{"some_url:port"}
groups := "some_group"
topics := []string{"some_topic"}
config := cluster.NewConfig()

saramaConsumer, err := cluster.NewConsumer(
brokers, groups, topics, config,
)

if err != nil {
return nil, err
}

return saramaConsumer, nil
}

最佳答案

不要调用 cluster.NewConsumer,而是添加一个可以在测试中换出的简单间接。例如,将函数分配给一个包变量(我用 time.Now 一直这样做)。

package main

import (
"testing"

"github.com/bsm/sarama-cluster"
)

var newConsumer = cluster.NewConsumer // replaceable in tests

func initSaramaConsumer() (*cluster.Consumer, error) {
brokers := []string{"some_url:port"}
groups := "some_group"
topics := []string{"some_topic"}
config := cluster.NewConfig()

saramaConsumer, err := newConsumer(
brokers, groups, topics, config,
)

if err != nil {
return nil, err
}

return saramaConsumer, nil
}

func TestInitSaramaConsumer(t *testing.T) {
newConsumer = newMockConsumer
defer func() { newConsumer = cluster.NewConsumer }()

// Tests for initSaramaConsumer goes here
}

func newMockConsumer([]string, string, []string, *cluster.Config) (*cluster.Consumer, error) {
panic("not implemented")
}

关于go - 在 sarama-cluster 中模拟 NewConsumer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46936844/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com