Метод 1: использование метода expectException
Один из самых простых и понятных способов ожидать исключения в PHP Unit — использовать метод expectException
. Этот метод позволяет вам указать тип исключения, которое вы ожидаете создать во время выполнения конкретного тестового примера. Давайте рассмотрим пример:
public function testDivideByZeroThrowsException()
{
$this->expectException(\Exception::class);
$calculator = new Calculator();
$calculator->divide(10, 0);
}
В этом примере мы ожидаем, что класс Calculator
выдаст экземпляр класса \Exception
при делении числа на ноль. Если исключение не будет создано во время выполнения тестового примера, тест завершится неудачно.
Метод 2: использование аннотации @expectedException
.
Другой подход к ожиданию исключений в PHP Unit — использование аннотации @expectedException
. Этот метод позволяет указать тип исключения непосредственно над методом тестирования. Вот пример:
/
* @expectedException \InvalidArgumentException
*/
public function testInvalidArgumentThrowsException()
{
$validator = new Validator();
$validator->validate(null);
}
В этом примере мы ожидаем, что класс Validator
выдаст \InvalidArgumentException
при проверке нулевого значения. Если исключение не выброшено, тест завершится неудачей.
Метод 3: использование метода expectExceptionMessage
Иногда вам также может потребоваться проверить сообщение об ошибке, связанное с исключением. Для этой цели PHP Unit предоставляет метод expectExceptionMessage
. Давайте посмотрим пример:
public function testFileNotFoundThrowsExceptionWithMessage()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('File not found');
$fileReader = new FileReader();
$fileReader->readFile('nonexistent.txt');
}
В этом примере мы ожидаем, что класс FileReader
выдаст экземпляр \Exception
с сообщением об ошибке «Файл не найден» при попытке прочитать несуществующий файл.. Если исключение не генерируется или сообщение об ошибке отличается, тест завершится неудачей.
Эффективная обработка исключений имеет решающее значение для написания надежного и надежного кода. В этой статье мы рассмотрели несколько методов перехвата исключений в PHP Unit, включая метод expectException
, аннотацию @expectedException
и метод expectExceptionMessage
. Освоив эти методы, вы сможете лучше писать комплексные модульные тесты и обеспечивать качество своего PHP-кода.