使用 gulp 完成测试后,快乐注入不会退出命令行

Hapi inject won't exit to command line after the test is done using gulp

本文关键字:注入 退出 命令行 快乐 gulp 测试 使用      更新时间:2023-09-26

我正在尝试进行简单的集成测试,但在测试完成后,它不会退出命令行。它只是卡在那里。

这是代码。

'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}));
});

问题可能是快乐仍然运行它的http服务器,所以node不知道退出。

尝试向测试添加after块并在那里调用server.stop()。像这样:

after(function(done) {
  server.stop({ timeout: 0 }, done)
})