使用Go构建微服务与测试驱动开发实践
测试驱动开发(TDD)概述
在软件开发中,测试驱动开发(TDD)是一种先编写测试用例,再编写代码使测试通过的开发方法。虽然很多人都知道TDD的好处,但真正能坚持实践且不偷工减料的人却很少。如果在TDD中偷工减料,就无法获得代码质量和功能信心的提升。
很多组织认为编写测试是浪费时间,会增加产品上市时间。但实际上,从应用的整个生命周期来看,开发只是其中一小部分时间。投资于测试在应用的整个生命周期都会有回报,尤其是在生产环境中,高可用性至关重要,满足变更和功能请求很紧急,而调试成本高、难度大。
开始测试驱动开发服务创建
为了开始我们的TDD之旅,创建一个名为 handlers_test.go
的文件,用于测试 handlers.go
文件中的函数。我们将为一个HTTP处理程序编写测试,该处理程序在有人POST请求开始新比赛时被调用。根据Apiary文档,该函数成功时应返回HTTP状态码201(Created)。
创建第一个失败的测试
为了测试服务器创建比赛的能力,我们需要调用HTTP处理程序。Go提供了一个测试HTTP服务器,它不会打开套接字,但可以完成我们需要的其他工作。以下是第一个迭代的测试文件 handlers_test.go
的完整代码:
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"net/http