Что такое хороший и чистый способ очистки после неудачного теста?Для многих тестовых случаев я сначала создаю чистую среду базы данных, которую необходимо очистить после завершения тестового набора.
test('some test', async () => {
const { sheetService, cleanup } = await makeUniqueTestSheetService();
// do tests with expect()
await cleanup();
});
Проблема заключается в следующем: в случае сбоя одного из expects
, cleanup()
не вызывается, и, следовательно, среда базы данных не очищается, и Jest жалуется Jest did not exit one second after the test run has completed.
, потому что соединение не закрыто.
Мой текущий обходной путь выглядит следующим образом, но он не чувствует себя хорошо и чисто нажатьочистка подключается к массиву, который обрабатывается в событии afterAll
.
const cleanUpHooks: (() => Promise<void>)[] = [];
afterAll(async () => {
await Promise.all(cleanUpHooks.map(hook => hook()));
});
test('some test', async () => {
const { sheetService, cleanup } = await makeUniqueTestSheetService();
// do tests with expect()
await cleanup();
});