Если я вас правильно понимаю, вы пишете тест для этого действия. В этом случае невозможно смоделировать $ member, так как новый экземпляр создается внутри метода. Вот почему мы все стремимся разместить как можно больше наших new
операторов на графе объектов (DI).
Обычно существует специальный тестовый набор PHPunit Zend_Test_PHPUnit для проверки ваших контроллеров.
Но, на самом деле, очень сложно или даже невозможно правильно проверить контроллеры ZF (то есть с полной изоляцией). Вам лучше протестировать остальную часть вашего приложения, вашу общую библиотеку и т. Д.
Другими словами, в логике ZF1 контроллер является центральным местом подключения (после начальной загрузки), где традиционно используется множество операторов new
. Очевидно, что это приводит к невозможности тестирования, поскольку каждый экземпляр, который создается, а не внедряется, не подлежит изменению.
Как отметил @vascowhite, также неплохо стремиться к экономным контроллерам. Это значит, перенести как можно больше логики на слой модели. Это приведет к меньшей избыточности (DRY) и одновременно лучшей тестируемости.
Но будьте внимательны, чтобы не раздуть свои модели. В какой-то момент вы, вероятно, захотите разделить некоторый код на дополнительные компоненты.
Еще одна проблема заключается в том, что вы не можете издеваться и над фронт-контроллером, так как он одиночный. Таким образом, у вас действительно нет много вариантов для проверки такого действия. Единственный вариант - добавить экземпляр члена или получить его из реестра (тоже не очень хорошая идея).
Итак, учитывая все это, ясно, что вы не можете достичь полной изоляции для своих тестов действий. Но
ZF2 будет намного проще тестировать.