Макет клиента statsd в тестовом пакете Go

Rogier Lommers спросил: 26 ноября 2017 в 05:34 в: go

Я использую этот statsd package для отправки метрик в наш statsd server. Чтобы инициализировать клиента, я вызываю metrics.Setup() в моем main, который выполняет init. Этот пакет выглядит следующим образом:

package:

package metricsimport (
    "fmt"    "github.com/cactus/go-statsd-client/statsd"
)// Client can be used to send stats to
var Client StatsdAccess// Setup initialises metrics gathering
func Setup() {
    if Client == nil {
        prefix := fmt.Sprintf("app.%s", logging.GetHost())
        std, err := statsd.NewBufferedClient(fmt.Sprintf("localhost:1234", prefix, 0, 0)
        if err != nil {
            logrus.Errorf("unable to dial the statsd host: %q", err)
            return
        }
        Client = std
    }
}// StatsdAccess is used as interface to statsd functions
type StatsdAccess interface {
    Inc(stat string, value int64, rate float32) error
    Gauge(stat string, value int64, rate float32) error
    Timing(stat string, delta int64, rate float32) error
}

С этого момента другой пакет отправляет метрики через этот глобальный клиент сделав это: metrics.Client.Inc("some.counter", 1, 1.0). Это работает нормально, но теперь у меня есть проблема с моими тестовыми файлами. Теперь они терпят неудачу, когда пакет фактически использует metrics package для отправки метрик. Это очевидно, потому что пакет метрик не был инициализирован и т. Д. Поэтому мой вопрос - я думаю, - как я могу высмеивать statsd client в моих тестовых файлах?

0 ответов