使用 httptest 测试 fasthttp

Testing fasthttp with httptest

我想知道如何在 Go 的基础库中测试使用 fasthttp using the httptest package 编写的应用程序。

我发现 this guide 很好地解释了测试,但问题是 httptest 不满足 http.Handler 接口所以我不知道如何做 http.HandlerFunc 因为fasthttp 使用它自己的 fasthttp.ListenAndServe 不兼容。

关于如何创建包装器或如何以其他方式端到端测试 fasthttp 编写的库有任何想法吗?

有两种可能的方法。对处理程序进行单元测试并不可行,因为您需要创建 RequestCtx 和 stub/mock 所有必需的字段。

相反,我将对您的 fasthttp 处理程序调出的代码进行单元测试 到。我会对实际处理程序本身进行端到端测试。

有一个 in memory listener 实现,您可以使用它来避免实际侦听 TCP 端口或 Unix 套接字。您将初始化服务器,但服务于此侦听器而不是网络连接。

然后您将创建一个 HTTP 客户端并照常调用相关方法,但使用此侦听器作为传输。

如果你 stub/fake 你的处理程序与之交互的任何东西,那么你可以只在没有外部依赖的情况下在内存中创建这个,即像单元测试一样,但它实际上会进行完整的系统测试。