登录
首页 >  Golang >  Go问答

如何对 pubsub 接收回调进行单元测试

来源:stackoverflow

时间:2024-04-27 13:06:30 433浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《如何对 pubsub 接收回调进行单元测试》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我有以下生产代码:

func pullMessages(ctx context.Context, sub *pubsub.Subscription) {
    err := sub.Receive(ctx, func(ctx context.Context, msg *pubsub.Message) {
        log.Printf("Got message: %q\n", string(msg.Data))
        processMessage(msg)
        msg.Ack()
    })
    if err != nil {
        log.Printf("Receive: %v", err)
    }
}

如何验证 processmessage 实际上在单元测试中被调用?


解决方案


非常简单:将回调设为命名函数而不是匿名函数:

func pullMessages(ctx context.Context, sub *pubsub.Subscription) {
    if err := sub.Receive(ctx, rcvCallback); err != nil {
        log.Printf("Receiving message: %s",err)
    }
}

func rcvCallback (ctx context.Context, msg *pubsub.Message) {
        log.Printf("Got message: %q\n", string(msg.Data))
        processMessage(msg)
        msg.Ack()
}

现在,在单元测试中,您可以创建 contextmessage 的实例并将其传递给您的函数。然而,在这种情况下,这几乎没有意义。您只需记录和确认消息以及应由上游项目进行单元测试的功能即可。因此,构建消息实例和单元测试 processmessage 更有意义。

好了,本文到此结束,带大家了解了《如何对 pubsub 接收回调进行单元测试》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>