Підготовка та очистка
Часто під час написання тестів є певна підотовча робота, яка повинна бути виконана перед запуском тестів а також певна фінальна робота, яка повинна бути виконана після запуску тестів. Jest надає допоміжні функції, щоб впоратись з цим.
Повторення налаштувань
Якщо у вас певні задачі, які ви повинні виконувати щоразу для багатьох тестів, використовуйте хуки beforeEach
та afterEach
.
Наприклад, припустимо, що кілька тестів взаємодіє з базою даних міст. У вас є метод initializeCityDatabase()
, який повинен бути викликаний перед кожним тестом і метод clearCityDatabase()
, який повинен бути викликаний після кожного тесту. Ви можете зробити наступне:
beforeEach(() => {
initializeCityDatabase();
});
afterEach(() => {
clearCityDatabase();
});
test('city database has Vienna', () => {
expect(isCity('Vienna')).toBeTruthy();
});
test('city database has San Juan', () => {
expect(isCity('San Juan')).toBeTruthy();
});
beforeEach
та afterEach
можуть обробляти асинхронний код так само, як і тести - отримуючи параметр done
або повертаючи проміс. Наприклад, якщо функція initializeCityDatabase()
повертає проміс, який виконається, коли база даних буде ініціалізована, ми можемо повернути цей проміс:
beforeEach(() => {
return initializeCityDatabase();
});
Одноразове налаштування
Інколи вам потрібно виконати налаштування перед тестами лише один раз на початку файла. Це може бути проблемою, якщо це налаштування асинхронне і, відповідно, ви не можете виконати його інлайново. Jest надає хуки beforeAll
та afterAll
для використання в таких ситуаціях.
Наприклад, якщо initializeCityDatabase()
та clearCityDatabase()
повертають проміси, а база даних міст може бути повторно використана в різних тестах, ми можемо змінити наш код наступним чином:
beforeAll(() => {
return initializeCityDatabase();
});
afterAll(() => {
return clearCityDatabase();
});
test('city database has Vienna', () => {
expect(isCity('Vienna')).toBeTruthy();
});
test('city database has San Juan', () => {
expect(isCity('San Juan')).toBeTruthy();
});