@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() не выбросит исключение или выбросит исключение другого типа, то тест не будет проходить.