小编Ram*_*tov的帖子

gomock 未接来电

我正在尝试使用 gomock 模拟以下方法

func (w *writer) Publish(vacancies []model.Vacancy) error {
    ...

    if _, err = w.conn.WriteMessages(msg); err != nil {
        return fmt.Errorf("failed to write message: %w", err)
    }

Run Code Online (Sandbox Code Playgroud)

界面:

type Producer interface {
        Publish(vacancies []model.Vacancy) error
        Close() error
    }

Run Code Online (Sandbox Code Playgroud)

套件测试:

func (p *ProducerTestSuite) SetupTest() {
    p.mockCtrl = gomock.NewController(p.T())
    p.producer = NewMockProducer(p.mockCtrl)
    writer, err := producer.NewWriter(context.Background(), scheduler.KafkaConf{Addr: "localhost:9092", Topic: "test"})
    p.Require().NoError(err)
    p.writer = writer
}
...
func (p *ProducerTestSuite) TestProducer_Publish() {
    p.producer.EXPECT().Publish([]model.Vacancy{}).Return(nil)
    p.Require().NoError(p.writer.Publish([]model.Vacancy{}))
}

Run Code Online (Sandbox Code Playgroud)

模拟生成:

//go:generate mockgen -package producer_test -destination mock_test.go …
Run Code Online (Sandbox Code Playgroud)

go apache-kafka gomock

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

apache-kafka ×1

go ×1

gomock ×1