Symmetric API testing 是啥?
这个概念应该是源自于 Gopher Academy Blog。
作者在维护一个 Golang 的 Twitter API 客户端,为了对 Twitter 的 API 进行测试,所以作者提出了 Symmetric API testing 的概念。
简单地说就是保存 API 的返回结果,然后在测试的时候,用保存的结果来进行测试。
这样就不用编写 mock 和 测试用例了。
至于名字为什么叫 Symmetric
, 是相对于传统的需要编写 mock 和 测试用例的方式 Asymmetric
而言的。
其实个人觉得把它叫做 SnapShot Testing 更为合适。
怎么实现?
除了手动保存 API 的返回结果,还可以使用 go-vcr 这个库来实现。
大概的代码如下:
r, err := recorder.New("<filename>")
if err != nil {
return err
}
defer r.Stop()
client.Transport = r
res, err := client.Get("http://api.twitter.com/...")
if err != nil {
return err
}
这里提供了完整的 示例代码。