1 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
很簡(jiǎn)單:讓你的回調(diào)成為一個(gè)命名函數(shù)而不是匿名函數(shù):
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()
}
現(xiàn)在,在您的單元測(cè)試中,您可以創(chuàng)建 aContext和 a的實(shí)例并將其Message傳遞給您的函數(shù)。但是,在這種情況下,這幾乎沒(méi)有意義。您只需記錄和確認(rèn)消息,這些功能應(yīng)該由上游項(xiàng)目進(jìn)行單元測(cè)試。因此,構(gòu)造一個(gè) message 和 unit test 的實(shí)例會(huì)更有意義processMessage。
- 1 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)