Golang中的API测试

Spi*_*key 9 api automated-tests unit-testing go

我知道Golang有一个允许运行单元测试的测试包。这对于内部调用Golang函数进行单元测试似乎效果很好,但似乎有人也在尝试将其用于API测试

考虑到自动测试框架(例如带有Chai断言库的Node.js的Mocha)的灵活性,使用Golang的测试包与其他测试相比有意义吗?

谢谢。

dap*_*lho 5

我同意@eduncan911 的评论。更具体地说,您可以通过确保您的处理程序接受一个测试来设计您的 API

http.ResponseWriter
Run Code Online (Sandbox Code Playgroud)

作为适当请求之外的参数。此时,您将被设置为声明一个新请求:

req, err := http.NewRequest("GET", "http://example.com", nil)
Run Code Online (Sandbox Code Playgroud)

以及一个新的 httptest 记录器:

recorder := httptest.NewRecorder()
Run Code Online (Sandbox Code Playgroud)

然后向您的处理程序发出新的测试请求:

yourHandler(recorder, req)
Run Code Online (Sandbox Code Playgroud)

以便您最终可以检查错误/等。在录音机中:

if recorder.Code != 200 {
  //do something
}
Run Code Online (Sandbox Code Playgroud)

  • 测试处理程序很好,但这并不能测试处理程序是否被最终应用程序实际使用,也不能测试路由是否运行良好。 (2认同)