2017-07-25 82 views
0

我想知道我怎么能在围棋的基础库使用httptest package测试与fasthttp编写的应用程序。测试fasthttp与httptest

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

如何创建一个包装的任何想法,或如何其他测试,书面库的端到端一个fasthttp?

+0

这是不遵循stdlib Handler接口的第三方复用器的缺点。如果这个库没有包含它自己的等价物到'httptest',那么你就是SOL,其中大部分都不是。 – Adrian

回答

2

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

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

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

你会再创建一个HTTP客户端,并调用相关的方法是正常的,但使用这个监听器作为传输。

如果存根/假冒任何东西,你的处理程序进行交互,那么你有可能使这一内存只有在没有外部的依赖关系,即像一个单元测试,但它实际上会做一个完整的系统测试。

+0

感谢您的建议。看了GitHub之后,我决定重写应用程序以回到标准的net/http,因为它后面有更多的支持,而且工具集成也更好。但我也正在对处理程序进行篡改/伪造以简化测试。谢谢! – Tigraine