是一款很不错的针对 Go 语言的 Elasticsearch 客户端,在 一文中,我用它举例解释了如何对文档建立索引并搜索文档。你如果希望代码能正常执行,不会被重构或者修改所影响,那么你必须要有一个能覆盖所有代码的测试用例。

在本文中我将教你如何用 Go 语言与 Elasticsearch 做单元测试。并且,此方法也适用于几乎所有语言调用外部 RESTful API.

服务调用 Elasticsearch

GetLog

日志是首先通过 Elasticsearch 倒序获取过来的,转换一下格式之后,在将结果返回给调用端。

对服务进行单元测试

elastic.Client
httptest.Server

预制的结果可以提前写入到一个文件里面,在代码里读取就可以了。源代码可以访问 获取

w.Write([]byte(resp))res

关于测试的一些注意点

尽管本文主要介绍的是如何通过 Go 语言编写外部调用的测试代码,但不得不说集成测试更佳。集成测试是基于整个系统的各个组件共同运行,测试的结果更接近于生产环境,能够提供更高的质量保障。

但是,集成测试一般来说更难实现,而且需要花费更多的时间。因此很少有人编写集成测试的代码。

最后

当测试 Go 客户端访问外服 API 的代码的时候,最好的方式就是 mock 外部服务,如果外服服务是通过结构体实现的时候,可以直接 mock 外部 API,返回一些预制的数据方便我们完成真实情况的测试。


本文由 原创编译, 荣誉推出