我有一个应用程序,它定义了一个type Client struct {}在我的代码中与其他各种客户端对话的应用程序,这些客户端与 github、elasticsearch 等服务对话。
现在我的一个包中有以下 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的方法。
Qyouu
相关分类