【发布时间】:2013-07-26 14:58:25
【问题描述】:
假设我有一些测试 Web 服务器的单元测试。由于我不想在这里讨论的原因(范围之外;-)),每个测试都需要一个新启动的服务器。
只要我不向服务器发送请求,一切都很好。但是一旦我这样做了,对 http 服务器的 close 函数的调用就无法按预期工作,因为所有发出的请求都会导致保持连接,因此服务器在实际关闭之前会等待 120 秒。
当然,这对于运行测试是不可接受的。
目前,我看到的唯一解决方案是
- 将keep-alive超时设置为
0,因此调用close实际上会关闭服务器, - 或者在不同的端口上启动每个服务器,尽管当您进行大量测试时这会变得难以处理。
关于如何处理这种情况的任何其他想法?
PS:我前一阵子问过How do I shutdown a Node.js http(s) server immediately?,并找到了一种可行的解决方法,但似乎这种解决方法在每种情况下都不能可靠运行,因为我得到了奇怪的结果不时。
【问题讨论】:
-
首先如何启动服务器?您是从节点还是从其他脚本运行 node.js 服务器?
-
另外我知道您可能有严格的要求,但是您真的需要在每次测试后重新启动服务器吗?我的意思是你可以重构一些东西,让你在同一台服务器上运行多个测试吗?
-
服务器使用 Node.js 以编程方式启动,使用通常的
http.createServer.listen东西。而且,不幸的是,是的,我确实需要在每个测试中都有一个新实例:-/
标签: node.js unit-testing webserver application-shutdown