Модульный тест Symfony не загружает app_ globals - PullRequest
4 голосов
/ 20 октября 2010

Я пытаюсь создать модульный тест для моего приложения в Symfony.

Мой /config/app.yml выглядит так:

all:
  tmp_dir: "tmp"

  # usps
  usps_username: xxxxx
  usps_password: xxxxx
  usps_dir: usps

в модульном тесте, когдаЯ запускаю что-то вроде:

$t->comment(sfConfig::get('app_usps_username'));

Это просто выведет и пустую строку.В чем дело?Как я могу получить доступ к этим значениям из app.yml из модульного теста?Если я пытаюсь получить доступ к значениям откуда-то еще, он работает как положено.

1 Ответ

5 голосов
/ 21 октября 2010

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

Если вы полагаетесь на параметры конфигурации, а не устанавливаете их явно в своем тесте:

sfConfig::set('usps_username', 'my username');

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

Редактировать:

Если вы посмотрите на каталог кеша, вы увидите, что все конфигурации создаются в каталоге приложения (cache / frontend / test / config / config_app.yml.PHP).Если вы поместите его в основной config / app.yml, просто все приложения наследуют эти значения.Тем не менее, вам нужно запустить свой скрипт в контексте приложения, чтобы использовать их.

Другими словами: это должно быть возможно, но вам придется инициализировать соответствующую конфигурацию приложения вместо конфигурации проекта (поэтому frontendConfiguration вместо ProjectConfiguration в вашей начальной загрузке).

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

...