使用 httptest 测试 fasthttp

Tig*_*ine 2 testing go fasthttp

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

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

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

Mar*_*ell 5

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

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

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

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

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

  • 请您发布一个使用内存中侦听器的完整示例。非常感谢。我在理解它时遇到了一些麻烦。另外,你认为你可以让它与`WebSocket`s一起工作吗?如果你已经知道后一个问题的答案,那会为我省去很多麻烦。 (2认同)