2

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

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

关于如何创建包装器或如何端到端测试 fasthttp 书面库的任何想法?

4

1 回答 1

5

有两种可能的方法。对处理程序进行单元测试实际上并不可行,因为您需要创建一个RequestCtx并存根/模拟所有必要的字段。

相反,我会对你的 fasthttp 处理程序调用的代码进行单元测试。我会对实际的处理程序本身进行 e2e 测试。

您可以使用内存中的侦听器实现来避免实际侦听 TCP 端口或 Unix 套接字。您将初始化服务器,但在此侦听器上提供服务,而不是在网络连接上提供服务。

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

如果您存根/伪造处理程序与之交互的任何内容,那么您可以仅在没有外部依赖项的情况下在内存中进行此操作,即像单元测试一样,但它实际上会进行完整的系统测试。

于 2017-07-25T08:10:31.897 回答