1 回答

TA贡献1827条经验 获得超8个赞
牢记这一点
在 Golang 你不能比较函数
在这种精确的情况下,我不能通过调用闭包本身来进行间接测试(因为它使用私有 3rd 方库的结构作为参数)
我找到的解决方案是模拟 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 关注
- 107 浏览
添加回答
举报