此问题已在此处有答案:
How can I test my Express app without running a live server?(1个答案)
昨天关门了。
我是一名教育工作者,正在帮助教授一门课程,该课程涵盖了使用Express编写HTTP服务器的基础知识。目前,我们的学生通过启动他们的服务器来测试他们的服务器,然后单独运行Jest,使用fetch
向他们的服务器发送请求。
通常情况下,发送这些请求的小性能开销不会成为问题,但由于我们有数百名学生,每个学生的CI管道需要大约2分钟才能运行,这给我们的系统带来了很大的压力,特别是当它接近截止日期时,我们的跑步者可能会落后24小时。
因此,我正在寻找一种通过模拟请求来加速测试的方法。从本质上讲,我希望学生能够编写类似于fetch
请求的代码,但不是通过localhost
发送,而是直接发送到Express服务器,这是同一进程的一部分,从而显着提高性能。
到目前为止,在我的调查中,我只遇到过supertest
,但它似乎在后台启动服务器,这意味着它并不比手动发送请求更快-本质上它只是抽象了运行服务器的部分,而不是消除它。
可以在Flask和许多其他框架中进行这种测试。
我如何才能在Express中以一种平易近人且可靠的方式完成这一任务?
需要明确的是,我不想将整个大学课程迁移到GitHub。这不应该是这个问题的答案。这根本不是答案请我能得到答案(或至少一个“对不起,你所要求的不存在”),而不是回答不解决问题?
1条答案
按热度按时间eiee3dmh1#
正如我在评论中提到的,您可以使用普通的unix套接字而不是localhost来移除网络堆栈。但是您也可以直接调用
app.handle
函数,并创建自己的请求和响应示例。https://nodejs.org/docs/latest-v14.x/api/http.html#http_class_http_incomingmessage
https://nodejs.org/docs/latest-v14.x/api/http.html#http_class_http_outgoingmessage