файла в которых запускаются тесты: stat.test.js, payment.test.js, featureFlag.test.js
то есть каждый файл где запускаются тесты должен заканчиваться на .test.js
но такой я создал setup.js файл, где я делаю beforeAll всех тестов, а именно регистрация юзера, создание минимальных данных чтобы можно было что-то тестировать
это код:
const { registration } = require('../helper/registration');
let data = {};
let setupComplete = false;
// eslint-disable-next-line no-undef
beforeAll(async () => {
const { bodyGuide, teamId, logUserId, folderId, deviceId, sessionId, stepId } = await registration();
data = { bodyGuide, teamId, logUserId, folderId, deviceId, sessionId, stepId };
setupComplete = true;
}, 100_000);
// Export a function that resolves when the setup is complete and provides the data
module.exports = async function waitForSetup() {
if (!setupComplete) {
// Wait for setup to complete
await new Promise(resolve => setTimeout(resolve, 100));
}
return data;
};
И проблема в том выбрал ли я правильный подход? Потому что во-первых я использую beforeAll от jest в файле который не имеет суффикса .test.js
но я хочу держать beforeAll в отдельном файле от файлов с тестами
Плюс я также получаю следующую ошибку в консоли после выполнения тестов
A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them.
Но хочу заметить что тесты выполняются все, все PASS, даже несмотря на ошибку
"но я хочу держать beforeAll в отдельном файле от файлов с тестами" Не надо. Настраивай и конфигурируй окружение там, где выполняется тест. Выносить в отдельный файл подобные вещи стоит только в том случае, если у тебя 100500 тестов, которые используют одни и те же данные (тут тоже куча подводных камней и шансов выстрелить себе в ногу). Но опять же - всё это можно легко уместить в одном файле со всем тестовым флоу и не прыгать туда-сюда ради правки чего-либо. Другие рекомендации можешь посмотреть здесь: https://github.com/goldbergyoni/javascript-testing-best-practices/blob/master/readme-ru.md Что касательно выполнения - попробуй установить для тестов таймер побольше test( 'my super test', async () => { ... }, 10000 )
спасибо большое !
Обсуждают сегодня