Как запустить сервер для нескольких тестовых файлов mocha chai-http?
Я запускаю свой сервер узлов в своем блоке before на моих тестах mocha chai-http.
У меня она отлично работает для одиночных тестовых файлов. Однако, когда я пытаюсь запустить несколько тестов в одной команде NODE_ENV=test mocha test/**/*.js
Я получаю ошибку.
Я попытался запустить серверы узлов на разных портах для каждого тестового файла. Это не сработало, есть ошибки запуска сервера узла.
Теперь я думаю, что было бы здорово, если бы у меня был один файл mocha, который запускается перед другими моими тестовыми файлами для запуска сервера, а затем один файл, который запускается после других тестовых файлов, чтобы убить / остановить сервер.
Как бы я пошел по этому поводу.
Ниже приведен фрагмент моего кода:
Вот один из моих тестовых файлов для справки:
var chai = require('chai');
var chaiHttp = require('chai-http');
chai.use(chaiHttp);
var expect = chai.expect;
var Sails = require('sails');
describe('REST User API', function() {
var app; // for access to the http app
var sails; // for starting and stopping the sails server
before(function (done) {
Sails.lift({
port: 3001,
log: {
level: 'error'
}
}, function (_err, _sails) {
if(_err){
console.log("Error!", _err);
done();
}
else {
app = _sails.hooks.http.app;
sails = _sails;
done();
}
});
});
describe("user session", function () {
var res; // http response
var authenticatedUser;
before(function (done) {
chai.request(app)
.post('/users/signin')
.set('Accept', 'application/json')
.set('Content-Type', 'application/json')
.send({ email: 'admin@test.com', password: 'secret'})
.end(function (_res) {
res = _res; // Record the response for the tests.
authenticatedUser = JSON.parse(_res.text); // Save the response user for authenticated tests
done();
});
});
it("should connect with a 200 status", function () {
expect(res).to.have.status(200);
});
it("should have a complete user session", function () {
var userSession = authenticatedUser;
expect(userSession).to.have.property('firstName');
expect(userSession).to.have.property('lastName');
expect(userSession).to.have.property('gender');
expect(userSession).to.have.property('locale');
expect(userSession).to.have.property('timezone');
expect(userSession).to.have.property('picture');
expect(userSession).to.have.property('phone');
expect(userSession).to.have.property('email');
expect(userSession).to.have.property('username');
expect(userSession).to.have.property('confirmed');
expect(userSession).to.have.property('status');
expect(userSession).to.have.property('authToken');
});
});
after(function (done) {
sails.lower(function() {
done()
});
});
});
1 ответ
Из мокко
v8.2.0
, вы можете использовать GLOBAL FIXTURES для настройки и демонтажа вашего веб-сервера для всех наборов тестов. Глобальные фикстуры гарантированно выполняются один и только один раз.