У меня есть приложение, которое определяет type Client struct {}
, которое взаимодействует с другими клиентами в моем коде, которые общаются с такими сервисами, как github ,asticsearch et c.
Теперь у меня есть следующий код ES в одном из моих пакетов
type SinkService interface {
Write(context, index, mapping, doc)
}
type ESSink struct {
client *elastic.Client
}
func NewESSink() *ESSink {}
// checks if the index exists and writes the doc
func (s *ESSink) Write(context, index, mapping, doc) {}
Я использую этот метод в своем главном клиенте, который запускает все приложение, как это c.es.Write(...)
. Теперь, если я хочу написать client_test.go
, я могу просто сделать mockESSink и использовать его с некоторым заглушкой, но это не будет охватывать строки, написанные в моем коде ES.
Как выполнить модульное тестирование моего кода ES ? Мой ESSink использует elastic.Client
. Как мне это посмеяться?
Я хотел бы встроить некоторый фиктивный клиент ES, который дает мне ответы на заглушки, и я смогу протестировать свой метод ESSink.Write
таким образом.