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