Tig*_*ine 2 testing go fasthttp
我想知道如何使用Go 基础库中的httptest 包测试用fasthttp编写的应用程序。
我发现this guide很好地解释了测试,但问题是httptest不满足http.Handler接口,所以我不知道如何做,http.HandlerFunc因为fasthttp使用它自己fasthttp.ListenAndServe的不兼容。
关于如何创建包装器或如何以其他方式测试 fasthttp 编写的库端到端的任何想法?
有两种可能的方法。对处理程序进行单元测试并不是真正可行的,因为您需要创建一个RequestCtx并存根/模拟所有必需的字段。
相反,我会对您的 fasthttp 处理程序调用的代码进行单元测试。我会对实际处理程序本身进行 e2e 测试。
有一个在内存监听器实现,你可以用它来避免实际收听一个TCP端口或Unix套接字上。您将初始化服务器,但在此侦听器上而不是在网络连接上提供服务。
然后,您将创建一个 HTTP 客户端并正常调用相关方法,但使用此侦听器作为传输。
如果您存根/伪造处理程序与之交互的任何内容,那么您可以仅在没有外部依赖的情况下将其放入内存中,即像单元测试一样,但它实际上会进行完整的系统测试。