2

Express.js バージョン 2.5.8 (レガシー コードから) を使用しており、スーパーテストを使用してルートの読み込みをテストしようとしています。サーバーの実行中に問題が発生していますが、停止していません。を使用してテストを実行するjasmine-nodeと、アサーションが成功したことが示されます。ただし、コンソールには、プロセスがまだ実行中であることが示されます。

var request = require('supertest')
  , express = require('express');

describe('Example Test', function() {
  var app;

  beforeEach(function() {
    app = express.createServer();

    app.configure(function() {
      app.set('port', process.env.PORT || 3000);
      app.use(express.logger('dev'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
    });

    app.get('/', function(req, res){
      res.send(200);
    });
  });

  it('index should return 200', function(done) {
    request(app)
    .get('/')
    .expect(200)
    .end(function(err, res) {
      expect(err).toBe(null);
      done();
    });
  });
});

この例は、express.js 3.xx を使用している可能性が高いものから変更されています。私の仮定では、express サーバーの動作が異なり、リクエストがテスト内で終了したときに閉じられないということです。この問題を修正する方法がわかりません。

4

1 に答える 1

2

サーバーを閉じていないため、サーバーはまだ実行されています。に追加app.close()するだけend(function(){})で、エクスプレスサーバーを停止できます。ノードも終了する場合は、を使用しますprocess.exit()

于 2013-02-18T21:02:05.077 に答える