在unit testing中closuresNode.js http服务器

假设我有一些testingWeb服务器的unit testing。 由于我不想在这里讨论(外部范围;-))的原因,每个testing都需要一个新启动的服务器。

只要我不发送请求到服务器,一切都很好。 但是一旦我这样做,对http服务器的close函数的调用就不能按预期工作,因为所有发出的请求都会导致保持活动的连接,因此服务器在实际closures之前等待120秒。

当然,这是不能接受的运行testing。

目前,我所看到的唯一解决scheme是要么

  • 将保持活动超时设置为0 ,所以close调用实际上会closures服务器,
  • 或者在不同的端口上启动每个服务器,但是当你有很多testing时,这变得很难处理。

任何其他想法如何处理这种情况?

PS:我有一个问如何closures一个Node.js http(s)服务器立即? 前一段时间,并find一个可行的方法来解决它,但因为看起来这个解决方法不能在任何情况下可靠地运行,因为我不时得到奇怪的结果。

 function createOneRequestServer() { var server = http.createServer(function (req, res) { res.write('write stuff'); res.end(); server.close(); }).listen(8080); } 

您也可以考虑使用进程来分叉进程,并在testing完成后终止进程。

 var child = fork('serverModuleYouWishToTest.js'); function callback(signalCode) { child.kill(signalCode); } runYourTest(callback); 

这种方法是可取的,因为它不要求你编写服务器的特殊情况,只处理一个请求,并保持你的testing代码和你的生产代码100%独立。