Как переписать параметр sfConfig в функциональном тесте lime в symfony 1.4 - PullRequest
0 голосов
/ 18 ноября 2011

Моя проблема заключается в следующем, я хотел протестировать некоторые функции, которые зависели от определенного параметра в sfConfig.Предлагается настройка app_foo и по умолчанию false.

«Стандартный» способ проверки выглядит следующим образом:

$browser = new sfTestFunctional(new sfBrowser());

$browser->
  get('/path_to/index')->
  ...
  end();

НО это не помогает изменить настройку следующим образом:

sfConfig::set('app_foo', true);
$browser = new sfTestFunctional(new sfBrowser());

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Ответ самуры хороший, вы также должны знать, что конфигурационные файлы осведомлены об окружающей среде, так что вы можете сделать это в своем app.yml:

all:
  my_setting: "super"

test:
  my_setting: "awesome"

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

0 голосов
/ 18 ноября 2011

sfConfig не может быть перезаписан в тесте, потому что sfConfig сбрасывается при следующем запросе.

НО поле с именем rawConfiguration в экземпляре браузера добавляется в sfConfig для запроса. Поэтому решение состоит в том, чтобы установить этот массив:

$browserEngine = new sfBrowser();
$browser = new sfTestFunctional($browserEngine);
// overwrite an sfConfig parameter in the browser context
$browserEngine->rawConfiguration = array_merge($browserEngine->rawConfiguration, array('app_foo' => true));

Тогда действие знает sfConfig::get('app_foo') со значением true.

...