簡體   English   中英

GoLang Sarama ConsumerGroup Mocking

[英]GoLang Sarama ConsumerGroup Mocking

我是 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

我相信我是 mocking 調用不正確,但現在確定還能做什么。

您可以像下面這樣編寫您的模擬消費者,這將滿足消費者組 object。

// 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
}

之后,您應該編寫成功和失敗的方法,並相應地設置模擬測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM