Моя проблема в том, что я всегда получаю ошибку "Address already in use::3000
" при выполнении моих тестов.
Вот что у меня есть:
package.json
................
"scripts": {
"test": "jest --watchAll --verbose --runInBand --maxWorkers=1"
},
................
server.js
const winston = require('winston');
const express = require('express');
const app = express();
module.exports = function() {
const port = process.env.PORT || 3000;
return app.listen(port, () => { winston.info(`Listening on port ${port}...`) });
}
auth.test.js (показывается только один тест)
describe('auth middleware', () => {
beforeEach(() => { server = require('../../startup/server'); });
afterEach(async () => {
await Category.remove({});
await server.close();
});
let token;
const exec = () => {
return request(server)
.post('/api/categories')
.set('x-auth-token', token)
.send({ name: 'category1' });
}
beforeEach(() => {
token = new User().generateAuthToken();
});
it('should return 200 if token is valid', async () => {
const res = await exec();
expect(res.status).toBe(200);
});
});
Я довольно новичок в NodeJS или Javascript, поэтому я не уверен, что делаю неправильно, большинство ответов по стеку указывают на добавление runInBand
или maxWorkers=1
к package.json
или ожидание server.close()
.
Ничто не работает для меня.
PS: у меня была эта проблема раньше с одним тестом, но после извлечения логики сервера в отдельный файл (из index.js
), теперь все тесты не проходят с этой ошибкой, так что ясно, что яя что-то упускаю.
И я не запускаю приложение, только мои тесты.