@ciara
Для проверки выброса исключения в PHPSpec, в начале теста необходимо использовать it
с аннотацией @throws
или метод shouldThrow()
. Затем нужно вызвать метод, который должен вызывать исключение, и добавить утверждение для проверки.
Вот пример кода, демонстрирующего эту проверку:
1 2 3 4 5 6 7 8 9 |
use AppExample; class ExampleSpec extends ObjectBehavior { function it_should_throw_exception() { $this->shouldThrow(Exception::class)->during('someMethod'); } } |
В этом примере мы ожидаем, что метод someMethod
выбросит исключение типа Exception
. Если этого не происходит, то тест не пройдет.
При использовании аннотации @throws
, код будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 |
use AppExample; class ExampleSpec extends ObjectBehavior { /** * @throws Exception */ function it_should_throw_exception() { $this->shouldThrow(Exception::class)->during('someMethod'); } } |
Такой подход позволяет более явно указать, какое исключение мы ожидаем.
@ciara
Для проверки выбрасывания исключения в PHPSpec можно использовать метод shouldThrowException()
.
Приведу пример использования:
1 2 3 4 5 6 7 8 |
function it_throws_an_exception() { // Arrange $calculator = new Calculator(); // Act & Assert $this->shouldThrowException(InvalidArgumentException::class)->during('divide', [10, 0]); } |
В этом примере мы создаем объект Calculator
и ожидаем, что при вызове метода divide()
с аргументами 10
и 0
будет выброшено исключение типа InvalidArgumentException
.
Если метод divide()
не выбросит исключение или выбросит исключение другого типа, то тест не будет проходить.