Hapi inject не будет выходить в командную строку после того, как тест будет выполнен с использованием gulp

Я пытаюсь провести простое интеграционное тестирование, но после того, как тест завершен, он не выходит в командную строку. Это просто застряло там.

Вот код

'use strict';

var Hapi = require('hapi');
var Inert = require('inert');
var Vision = require('vision');

var log = require('./logger');
var config = require('./config');
var extensions = require('./extensions');

var server = new Hapi.Server({});
server.connection({ port: config.port });
require('./routes')(server);

// adds metadata to responses, and customizes error responses
server.ext({
  type: 'onPreResponse',
  method: function preResponse(request, reply) {
    extensions.handlePreResponse(request, reply);
    return reply.continue();
  }
});

server.on('request-error', extensions.handleOnRequestError);

server.register(
  [
    Inert,
    Vision,
    require('./plugins/swaggerPlugin')
  ],
  function handlePluginRegistrationError(err) {
    if (err) {
      log.warn(JSON.stringify(err));
      throw err; // something bad happened loading the plugins
    }
    server.start(function serverStartedCallback() {
      log.warn('DAL services listening on port '+config.port+'...');
      log.warn('Server running at: ' + server.info.uri);
    });
  }
);

module.exports = server;

Вот тест

'use strict';

var chai = require('chai');
var expect = chai.expect;
var server = require('../../../index');

describe('Root Integration Tests', function desc() {
  it('should get root route', function it(done) {
    var options = {
      method: "GET",
      url: "/"
    };
    server.inject(options, function(response) {
      expect(response.statusCode).to.equal(200);
      done();
    });
  });
});

Вот мой глоток.

gulp.task('integration-test', function performIntegrationTests() {
  return gulp.src(['tests/integration/**/*.js'])
    .pipe(mocha({'reporter': 'dot', 'timeout': 30000}));
});

1 ответ

Вероятно, проблема в том, что у хапи по-прежнему работает http-сервер, поэтому узел не знает, как выйти.

Попробуйте добавить after заблокировать на ваш тест и вызов server.stop() там. Что-то вроде этого:

after(function(done) {
  server.stop({ timeout: 0 }, done)
})
Другие вопросы по тегам