0

私は、flatiron Web サイトから直接取得したできるだけシンプルな Web サーバーを使用しており、vows でテストする実験を行いたいと考えていました。テストに合格することはできますが、テストが終了しません。これは、flatiron サーバーがシャットダウンしないためだと思います。サーバーをシャットダウンするにはどうすればよいですか、または別のテクノロジーで簡単な http テストを行うためのより良い方法はありますか?

サーバー.js

var flatiron = require('flatiron'),
    app = flatiron.app;

app.use(flatiron.plugins.http);

app.router.get('/', function () {
  this.res.writeHead(200, { 'Content-Type': 'text/plain' });
  this.res.end('Hello world!\n');
});

app.start(8000);

サーバー-test.js

var request = require('request'),
    vows = require('vows'),
    assert = require('assert');

vows.describe('Hello World').addBatch({
  "A GET to /": {
    topic: function () {
      server = require('../server');
      request({
        uri: 'http://localhost:8000',
        method: 'GET'
      }, this.callback)
    },
    "should respond with 200": function (error, response, body) {
      assert.equal("Hello world!\n", body);
    },
    teardown: function (topic) {
      // *********************************
      // Do something to shutdown flatiron
      // *********************************
    }
  }
}).export(module);
4

1 に答える 1

3

サーバーをシャットダウンするには、サーバーをエクスポートする必要があります。これをserver.jsに追加するだけです:module.exports = app;

これで、server var を使用して flatiron をシャットダウンできます。ドキュメントはそれを閉じる方法についてあまり冗長ではありませんが、私はなんとかそれを閉じることができましたapp.server.close(). ファイルは次のとおりです。

サーバー.js

var flatiron = require('flatiron'),
    app = flatiron.app;

module.exports = app;

app.use(flatiron.plugins.http);

app.router.get('/', function () {
  this.res.writeHead(200, { 'Content-Type': 'text/plain' });
  this.res.end('Hello world!\n');
});

app.start(8000);

サーバー-test.js

var request = require('request'),
    vows = require('vows'),
    assert = require('assert');

var app = require('./server');

vows.describe('Hello World').addBatch({
  "A GET to /": {
    topic: function () {
      request({
        uri: 'http://localhost:8000',
        method: 'GET'
      }, this.callback)
    },
    "should respond with 200": function (error, response, body) {
      assert.equal("Hello world!\n", body);
    },
    teardown: function (topic) {
      app.server.close();
    }
  }
}).export(module);
于 2013-01-12T00:07:54.423 に答える