使用httptest测试fasthttp

时间:2017-07-25 07:07:40

标签: testing go fasthttp

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

我发现this guide很好地解释了测试,但问题是httptest不满足array:2 [▼ 2 => array:5 [▶] 227 => array:5 [▶] ] 接口所以我不知道如何使用http.Handler因为fasthttp使用它自己的http.HandlerFunc是不兼容的。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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