1

我正在为我的模块编写一个测试脚本,我需要能够在我的请求完成后关闭我的服务器。以下代码有效,但我可以看到 app.close() 已从 express 3 中删除。现在最好的方法是什么?

var testCase = require('nodeunit').testCase;
var request = require('request');
var express = require('express');

var app = express.createServer();
var srv = app.listen();
....

request({
    method: 'POST',
    json: true,
    body: { id: 'second request'},
    url: 'http://' + target
  }, function(err, res, body) {

    console.info("closing server");
    app.close();
    test.done();
  });
});

谢谢,李

ps test.done() 必须在关闭服务器后调用,否则测试会失败。

4

1 回答 1

2

Express 应用程序曾经继承自http.Server,但现在不再这样做了,这就是该close方法的来源。相反,请调用close()您的srv实例。你可能通常会看到这段代码写成:

var app = express.createServer();
var srv = require('http').createServer(app);
srv.listen(port);

根据以下文档app.listen()

绑定并监听给定主机和端口上的连接,此方法与节点的http.Server#listen().

于 2012-11-08T17:06:44.230 回答