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

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

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

Винятки · Pest

Коли ви тестуєте поведінку в PHP, іноді потрібно перевірити, що виняток або помилка справді викинуті. Щоб створити тест, який очікує викидання винятку, скористайтеся методом throws().

it('throws exception', function () {
    throw new Exception('Something happened.');
})->throws(Exception::class);

Якщо ви хочете зробити ще й перевірку повідомлення винятку, передайте методу throws() другий аргумент.

it('throws exception', function () {
    throw new Exception('Something happened.');
})->throws(Exception::class, 'Something happened.');

Коли тип винятку не важливий і вас цікавить лише повідомлення, передайте саме повідомлення, не вказуючи тип винятку.

it('throws exception', function () {
    throw new Exception('Something happened.');
})->throws('Something happened.');

Методом throwsIf() можна перевіряти виняток умовно: перевірка виконується, якщо задане булеве вираження дає true.

it('throws exception', function () {
    //
})->throwsIf(fn() => DB::getDriverName() === 'mysql', Exception::class, 'MySQL is not supported.');

Так само як throwsIf(), метод throwsUnless() перевіряє виняток умовно, якщо задане булеве вираження дає false.

it('throws exception', function () {
    //
})->throwsUnless(fn() => DB::getDriverName() === 'mysql', Exception::class, 'Only MySQL is supported.');

Ви також можете перевірити, що задане замикання викидає один або кілька винятків, за допомогою методу toThrow() з API очікувань.

it('throws exception', function () {
    expect(fn() => throw new Exception('Something happened.'))->toThrow(Exception::class);
});

Якщо ви очікуєте, що жодного винятку не буде викинуто, використовуйте метод throwsNoExceptions().

it('throws no exceptions', function () {
    $result = 1 + 1;
})->throwsNoExceptions();

Часом потрібно просто позначити тест як провалений. Для цього є метод fail().

it('fails', function () {
    $this->fail();
});

Методу fail() можна передати й повідомлення.

it('fails', function () {
    $this->fail('Something went wrong.');
});

Крім того, методом fails() можна перевірити, що тест провалюється.

it('fails', function () {
    $this->fail('Something happened.');
})->fails();

Причину провалу теж можна перевірити, передавши повідомлення методу fails().

it('fails as expected', function () {
    $this->fail('Something happened.');
})->fails('Something happened.'); // Проходить

it('fails in an unexpected way', function () {
    $this->fail('Something unexpected happened.');
})->fails('Something happened.'); // Провалюється

Тепер, коли ви навчилися писати тести з перевіркою винятків, наступний крок - розібратися з «Фільтруванням тестів». Ця можливість дозволяє ефективно запускати конкретні тести за критеріями на зразок назви тесту, змінених файлів та інших: Фільтрування тестів →

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

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

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