如何在flatiron中测试HTTP服务器

时间:2012-12-31 23:34:18

标签: vows flatiron.js

我正在flatiron网站上直接使用简单的网络服务器,并希望用誓言进行实验测试。我可以通过测试,但测试永远不会退出。我认为这是因为我的熨斗服务器永远不会关闭。如何关闭服务器或使用其他技术进行简单的http测试?

server.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);

1 个答案:

答案 0 :(得分:3)

您需要导出服务器才能将其关闭。 只需在 server.js module.exports = app;

中添加

现在,您可以使用server var关闭flatiron。文档对于如何关闭文档并不太冗长,但我设法用app.server.close()关闭它。 以下是文件:

<强> server.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);