Zend Framework 1: замена ресурса начальной загрузки во время тестирования - PullRequest
0 голосов
/ 07 апреля 2019

(я знаю, что 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, в моих индивидуальных методах испытаний.Какой хороший способ сделать это?Я все еще хотел бы, чтобы они использовали свои исходные значения по умолчанию, но я хочу иметь возможность заменить их при необходимости.

Есть ли более типичный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...