Сервер работает (проверено почтальоном). Код также работает, если я запускаю сервер и удаляю обработчики beforeAll и afterAll. Консольный вывод:
Приложение слушает порт 3200!
после запуска сервера
Я не понимаю, в чем проблема.
import request from 'request';
import { start, stop } from '../src/server';
describe('A suite', function () {
beforeAll(async () => {
await start();
});
afterAll(async () => {
await stop();
});
it('server test', async () => {
const data = { tableName: 'supply' };
console.log('after server start');
const response = await new Promise((resolve, reject) => {
request.post({
url: 'http://localhost:3200/getTable',
json: data
}, (error, response, body) => {
if (error) {
reject(body);
} else {
resolve(body);
}
});
});
console.log(response);
});
});
const start = async (): Promise<void> => {
await new Promise((resolve, reject) => {
server = app.listen(port, () => {
console.log(`App listening on port ${port}!`);
resolve();
});
});
}
const stop = async (): Promise<void> => {
await new Promise((resolve, reject) => server.close(() => {
console.log('App closed successfully')
resolve();
}));
}
Я обнаружил, что проблема в том, что при запуске тестов невозможно установить соединение с базой данных. Любая идея, как я могу создать соединение с базой данных, когда я запускаю Жасмин? В чем разница между вызовом start () из теста или просто запуском npm start. Когда я использую npm start, все работает нормально, но когда я звоню из jasmine, соединение с БД невозможно.
Это проблема машинописного текста, что-то вроде тестов, запускаемых с узлом, но они должны выполняться с ts-узлом. Я запускаю тест с помощью команд: tsc; жасмин.