Как создать исключения (exceptions) в PHPUnit?

Пользователь

от jorge , в категории: PHP , год назад

Как создать исключения (exceptions) в PHPUnit?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dayna , год назад

@jorge 

Для создания исключений (exceptions) в PHPUnit можно использовать метод expectException внутри тестового метода.


Ниже приведен пример использования метода expectException, чтобы проверить исключение InvalidArgumentException:

1
2
3
4
5
6
7
public function testDivisionByZeroThrowsException()
{
    $this->expectException(InvalidArgumentException::class);

    $calculator = new Calculator();
    $calculator->divide(10, 0);
}


В этом примере ожидается, что при делении на ноль будет выброшено исключение InvalidArgumentException. Если исключение не будет выброшено или выбросится другое исключение, тест будет отмечен как неудавшийся.


Также можно использовать метод expectExceptionMessage, чтобы проверить сообщение, связанное с исключением. Ниже приведен пример:

1
2
3
4
5
6
7
8
public function testDivisionByZeroThrowsExceptionWithCorrectMessage()
{
    $this->expectException(InvalidArgumentException::class);
    $this->expectExceptionMessage('Cannot divide by zero');

    $calculator = new Calculator();
    $calculator->divide(10, 0);
}


В этом примере ожидается выбрасывание исключения InvalidArgumentException с сообщением "Cannot divide by zero". Если сообщение не совпадает или исключение не выбрасывается, тест не пройдет.

Пользователь

от margaret , 4 месяца назад

@jorge 

Дополнительно, в PHPUnit также доступен метод expectExceptionCode для проверки кода исключения. Ниже приведен пример использования метода expectExceptionCode:

1
2
3
4
5
6
7
8
public function testCustomExceptionCode()
{
    $this->expectException(MyCustomException::class);
    $this->expectExceptionCode(500);

    $myClass = new MyClass();
    $myClass->myMethod();
}


В этом примере ожидается, что будет выброшено исключение класса MyCustomException с кодом 500. Если код исключения не совпадает или исключение не выбрасывается, тест не будет пройден.


Таким образом, методы expectException, expectExceptionMessage и expectExceptionCode позволяют проверить выбрасывание исключений в тестах PHPUnit и удостовериться, что при определенных условиях код генерирует нужное исключение с нужным сообщением и кодом.