我想知道如何使用Go基础库中的fasthttp来测试使用httptest package编写的应用程序。
我发现this guide很好地解释了测试,但问题是httptest不满足array:2 [▼
2 => array:5 [▶]
227 => array:5 [▶]
]
接口所以我不知道如何使用http.Handler
因为fasthttp使用它自己的http.HandlerFunc
是不兼容的。
关于如何创建包装器的任何想法,或者如何以端到端方式测试fasthttp编写的库?
答案 0 :(得分:4)
有两种可能的方法。单元测试处理程序并不可行,因为您需要创建RequestCtx和存根/模拟所有必需的字段。
相反,我会对你的fasthttp处理程序调用的代码进行单元测试 至。我会亲自测试实际的处理程序。
您可以使用in memory listener实现来避免实际侦听TCP端口或Unix套接字。您可以初始化服务器,但是在此侦听器上而不是在网络连接上提供服务。
然后,您将创建一个HTTP客户端并正常调用相关方法,但使用此侦听器作为传输。
如果您存储/伪造处理程序与之交互的任何内容,那么您可以在没有外部依赖性的情况下在内存中进行此操作,例如单元测试,但它实际上将进行完整的系统测试。