【发布时间】:2022-11-22 04:14:46
【问题描述】:
去版本:1.19x
这是我要测试的功能(statsd是"github.com/DataDog/datadog-go/v5/statsd"外部库)
s, err := statsd.New(StatsdHost)
emitGauge(s, 10.0)
// need to test below function
func emitGauge(s *statsd.Client, i float64) {
// calls statsd Gauge function
// s.Gauge("name", i, "", 1)
}
我希望我的测试为 statsd.Client 传递一个模拟对象,并断言正确的值传递给了 s.Gauge
我试过了
type StubStatsd struct{}
func (s StubStatsd) Gauge(name string, value float64, tags []string, rate float64) error {
return nil
}
但我得到Cannot use 'statsdStub' (type StubStatsd) as the type *statsd.Client
测试此类功能的正确方法是什么?
【问题讨论】:
-
你不能嘲笑
*statsd.Client。您的问题已在 SO 上得到一百万次回答。请使用搜索栏。 -
你的函数
emitGauge需要一个接口。如果它采用具体类型,那么这是您可以传递给它的唯一类型。
标签: go