<? phpukraine ДОКУМЕНТАЦІЯ
⌕Пошук по платформі
Документація українською

Переклад офіційної документації українською. Кожен розділ показує стан готовності: недоперекладене позначене відкрито, а не приховане.

ОСНОВИ · ПЕРЕКЛАДЕНО оновлено 25 вересня 2026

Хуки · Pest

Хуки в Pest схожі на кроки, які ви робите, коли готуєте страву: спочатку збираєте й готуєте інгредієнти, потім готуєте саму страву, а наприкінці прибираєте за собою. Так само хуки дозволяють виконувати певні дії до та після кожного тесту або файлу: наприклад, готувати тестові дані, ініціалізувати тестове середовище чи звільняти ресурси після завершення тестів.

За допомогою хуків у Pest ви впорядковуєте процес тестування й автоматизуєте повторювані дії. Незалежно від того, чи пишете ви unit-тести для невеликого проєкту, чи будуєте складний набір тестів для великого застосунку, хуки допоможуть зекономити час і підвищити якість тестів.

Крім того, якщо ви хочете виконати хук лише для певної групи тестів, можете розмістити його всередині функції describe().

beforeEach(function () {
    //
});

describe('something', function () {
    beforeEach(function () {
        //
    });

    //

    describe('something else', function () {
        beforeEach(function () {
            //
        });

        //
    });
});

test('something', function () {
    //
});

Ось список хуків, доступних у Pest:

beforeEach()

Виконує передане замикання перед кожним тестом у поточному файлі, гарантуючи, що вся потрібна підготовка й конфігурація завершені до початку кожного тесту.

beforeEach(function () {
    // Підготувати щось перед кожним запуском тесту...
});

У хуку beforeEach() можна ініціалізувати властивості, які будуть спільними для всіх тестів у поточному файлі. Наприклад, через beforeEach() можна ініціалізувати властивість $repository перед кожним тестом, щоб вона була доступна в наступних тестах файлу.

beforeEach(function () {
    $this->userRepository = new UserRepository();
});

it('may be created', function () {
    $user = $this->userRepository->create();

    expect($user)->toBeInstanceOf(User::class);
});

afterEach()

Виконує передане замикання після кожного тесту в поточному файлі, даючи змогу прибрати ресурси або стан, які могли змінитися під час тестування.

afterEach(function () {
    // Очистити тестові дані після кожного запуску тесту...
});

Отже, у прикладі вище хук beforeEach() ініціалізує властивість $userRepository, а хук afterEach() за потреби «прибирає» її після кожного тесту. Так ресурси, які використовує обʼєкт, звільняються або скидаються між тестами, що запобігає взаємному впливу тестів і небажаній поведінці.

afterEach(function () {
    $this->userRepository->reset();
});

За бажанням для прибирання після конкретного тесту можна скористатися методом after(). Це зручно, коли потрібно звільнити ресурси, специфічні для одного тесту, а не спільні для всіх тестів у файлі.

it('may be created', function () {
    $this->userRepository->create();

    expect($user)->toBeInstanceOf(User::class);
})->after(function () {
    $this->userRepository->reset();
});

beforeAll()

Виконує передане замикання один раз перед запуском будь-яких тестів у поточному файлі, даючи змогу зробити підготовку чи ініціалізацію, спільну для всіх тестів.

beforeAll(function () {
    // Підготувати щось один раз перед запуском тестів цього файлу...
});

Зверніть увагу: на відміну від хука beforeEach(), у хуку beforeAll() змінна $this недоступна. Хук виконується до запуску будь-яких тестів, тому ще немає екземпляра тестового класу чи обʼєкта, на який ця змінна могла б посилатися.

afterAll()

Виконує передане замикання один раз після завершення всіх тестів у поточному файлі, даючи змогу виконати потрібне прибирання або завершальні дії.

afterAll(function () {
    // Очистити тестові дані після виконання всіх тестів...
});

Як і в методі beforeAll(), у хуку afterAll() змінна $this недоступна. Хук afterAll() зазвичай виконується після того, як усі тести у файлі завершилися, тому тестового екземпляра чи обʼєкта, на який могла б посилатися змінна, вже не існує.


Коли ви опануєте хуки для налаштування передумов і прибирання після тестів, можна переходити до «Наборів даних», які дозволяють запускати той самий тест із різними вхідними даними чи параметрами. Набори даних дають змогу ретельно перевірити код у різних умовах і граничних випадках, щоб знайти й виправити помилки, які не завжди помітні відразу: Набори даних →

Стан перекладу

Перекладаємо з офіційної документації, розділ за розділом, і не ховаємо недоперекладене. Помітили неточність у терміні чи реченні: напишіть, виправимо.

48%
Готовності
0
У роботі
12
Ще не перекладено
Глосарій термінів