使用Go构建微服务:从测试驱动开发到云端部署
测试驱动开发(TDD)概述
很多人都知道测试驱动开发(TDD),但真正能坚持实践的人却不多,更别说不偷工减料地实践了。在TDD中偷工减料是最糟糕的做法,你花费了时间和精力,却无法获得代码质量和功能可靠性的提升。
在TDD中,我们应该把大约95%的时间花在编写测试上,只花5%的时间编写代码。测试代码的规模通常要比被测试代码大很多,因为要覆盖函数的所有可能路径,所需的代码量比编写函数本身更多。
虽然TDD会减慢初始开发速度,但从应用的整个生命周期来看,对测试的投入会带来巨大回报,尤其是在生产环境中:
- 系统必须保证高可用性。
- 满足变更和功能请求非常紧迫。
- 调试成本高、难度大,有时甚至几乎不可能。
创建首个失败测试
为了开启服务创建的TDD之旅,我们创建一个名为 handlers_test.go
的文件,用于测试 handlers.go
文件中的函数。我们要为处理创建新比赛请求的HTTP处理程序编写一个测试。根据Apiary文档,该函数成功时应返回HTTP状态码201(Created)。
以下是 handlers_test.go
文件的初始代码:
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"net/http/httptest"
"testing"