Как установить параметры среды в пакете Symfony?

Я пишу модульные тесты для контроллера Symfony2, который использует службу для доступа к внешнему API. Я сделал фиктивный подкласс этой службы для целей модульного тестирования, который проверяет, что контроллер дает ему правильный ввод.

Конфигурация службы находится в {bundle}/Resources/config/parameters.yml. На данный момент я переопределяю параметр класса службы в app/config/config_test.yml, чтобы мои модульные тесты использовали фиктивную службу.

Я хотел бы поместить тестовую конфигурацию куда-нибудь в свой пакет, если смогу, но когда я создаю config_test.yml в {bundle}/Resources/config, он игнорируется. Есть ли способ заставить это работать, или моя конфигурация для конкретной среды должна оставаться в каталоге приложения?


person kaynetoad    schedule 10.03.2014    source источник


Ответы (3)


Я предлагаю использовать ваш собственный загрузчик в комплекте. И в зависимости от env загружайте разные файлы yml.

person pomaxa    schedule 10.03.2014

Для тех, кто попал сюда в поисках способа установки различных сред, вот решение из документы.

По сути, вам нужно добавить ключ framework с параметром test, установленным на true или любое другое неложное значение:

imports:
    - { resource: config_dev.yml }

framework:
    test: ~
    session:
        storage_id: session.storage.filesystem
person Callistino    schedule 25.03.2014

Ваш вопрос не имеет смысла, поскольку вы говорите о модульном тестировании и читаете какую-то конфигурацию, которая в первую очередь является оксюмороном.

Если вы действительно выполняете модульное тестирование, то есть просто тестируете один класс, когда все зависимости либо заглушены, либо смоделированы, то вы не должны получать доступ к какой-либо конфигурации. Вы просто издеваетесь над интерфейсом/классом службы с помощью макетов PHPUnit или Mockery, определяете ожидания от этого макета с точки зрения того, какие методы следует вызывать и какие аргументы они должны получать, а затем просто проверяете, что эти ожидания оправдались.

person Elnur Abdurrakhimov    schedule 10.03.2014