@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". Если сообщение не совпадает или исключение не выбрасывается, тест не пройдет.
@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 и удостовериться, что при определенных условиях код генерирует нужное исключение с нужным сообщением и кодом.