Я пишу несколько сквозных тестов для проверки соединений с сокетами в моем приложении.Я ожидаю получения событий сокета после определенных запросов API остальных.Например, после нажатия: /api/v1/[createTag]
я ожидаю получения события createTag
с помощью socket.io-client.Проблема в том, что он очень непостоянно, а иногда и терпит неудачу, с хорошими запросами API покоя.Причина сбоя в том, что событие done () внутри socket.on('createTag' ...
никогда не вызывается, поэтому оно получает тайм-аут.В браузере в настоящее время все конечные точки и сокеты API работают нормально.Есть ли какая-то конкретная конфигурация, которую я мог бы пропустить, чтобы протестировать socket.io-client в среде Node.js и Jest?
Ниже приведены мои тесты и большое спасибо заранее:
describe('Socket integration tests: ', () => {
beforeAll(async done => {
await apiInit();
const result = await requests.userSignIn(TEST_MAIL, TEST_PASSWORD);
TEST_USER = result.user;
SESSION = result.user.session;
console.log('Test user authenticated succesfully.');
done();
});
beforeEach(done => {
socket = io(config.socket_host, { forceNew: true })
socket.on('connect', () => {
console.log('Socket connection succesful.');
socket.emit('session', { data: SESSION }, (r) => {
console.log('Socket session successful.');
done();
});
});
})
test('Receiving createTag socket event?', async(done) => {
console.log('API request on createTag');
const response = await Requester.post(...);
console.log('API response on createTag', response);
socket.on('createTag', result => {
console.log('createTag socket event succesful.');
createdTagXid = result.data.xid;
done();
})
});
afterEach(done => {
if(socket.connected) {
console.log('disconnecting.');
socket.disconnect();
} else {
console.log('no connection to break');
}
done();
})
}