1 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
牢記這一點
在 Golang 你不能比較函數(shù)
在這種精確的情況下,我不能通過調(diào)用閉包本身來進行間接測試(因為它使用私有 3rd 方庫的結(jié)構(gòu)作為參數(shù))
我找到的解決方案是模擬 slack.MsgOptionText(message, false),然后返回 PostMessage(channelID string, options ...slack.MsgOption) 的閉包:
type slackMsgCreator interface {
MsgOptionText(string, bool) slack.MsgOption
}
type slackMsgCreatorInst struct{}
func (s slackMsgCreatorInst) MsgOptionText(text string, escape bool) slack.MsgOption {
return slack.MsgOptionText(text, escape)
}
...
slackMsgCreator.
EXPECT().
MsgOptionText("Dear John Doe, message goes here", false).
Return(slack.MsgOptionText("Dear John Doe, message goes here", false)).
Times(1)
而且,至于 PostMessage - 正如評論中所建議的那樣,我唯一可以檢查的是閉包不是零:
slackAPIClient.
EXPECT().
PostMessage("ABCDE", Not(Nil())).
AnyTimes()
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報