(я знаю, что ZF1 мертв, но я пытаюсь улучшить свои тесты, чтобы я мог перейти от него.)
В файле начальной загрузки ZF1 я могу определить ресурсы (например, соединения с базой данных),и использовать их по всему приложению.Я хотел бы заменить некоторые из этих ресурсов на макеты для моих интеграционных тестов, но я не уверен в наилучшем способе.
Я могу определить ресурс следующим образом:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
public function _initMyResource() {
return new MyResource();
}
}
и тогда мои контроллеры могут получить его следующим образом:
class MyController extends Zend_Controller_Action {
public function indexAction() {
$myResource = $this->getInvokeArg('bootstrap')->getResource('MyResource');
}
}
Тогда мой тест контроллера может выглядеть следующим образом:
class MyTestCase extends Zend_Test_PHPUnit_ControllerTestCase {
protected function setUp() {
$this->bootstrap = array($this, 'appBootstrap');
parent::setUp();
}
public function appBootstrap()
$this->application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$this->application->bootstrap();
}
public function testSample() {
$myResource = new MyMockResource();
// what do I do with it?
$this->dispatch('/index');
}
}
проблема в том, что все ресурсы загружаются методом setUp
из Zend_Test_PHPUnit_ControllerTestCase
, когда он вызывает мой метод appBootstrap
.
Но я бы хотел заменить некоторые ресурсы, такие как MyResource
после setUp
, в моих индивидуальных методах испытаний.Какой хороший способ сделать это?Я все еще хотел бы, чтобы они использовали свои исходные значения по умолчанию, но я хочу иметь возможность заменить их при необходимости.
Есть ли более типичный способ сделать это?