Как бы вы ожидали, что «ожидаемые» будут работать? Метод может выдать только одно исключение.
Вы должны будете написать разные модульные тесты для каждого способа, который может дать сбой. Поэтому, если метод законно выбрасывает два исключения, вам нужно настроить два теста, чтобы заставить метод генерировать каждое исключение.
Расширение RunKit может это сделать ( runkit_method_add ()
и т. Д. )
Однако это экспериментальное расширение, и вы уже целитесь в ногу ...
У вас есть другие варианты:
__ get ()
и ] __ call ()
подключаемый модуль класса расширяет BaseImplementation
и имеет заводской экземпляр подключаемого модуля
вместо BaseImplementation
). Zend Plugin Loader делает что-то подобное. $ this-> plugin-> onFoo ()
). Для этого есть библиотека. PHP этого не допускает. В других отношениях это может быть динамический язык, но система классов намеренно ограничивает. Вы можете либо установить расширение runkit , которое изменяет язык, позволяя издеваться над классами во время выполнения (но тогда вы больше не используете простой PHP), либо вы можете использовать магические методы , чтобы смоделировать его.