如何在symfony 1.4中覆盖功能石灰测试中的sfConfig设置

时间:2011-11-18 08:46:46

标签: symfony1 symfony-1.4 functional-testing

我的问题是以下我想测试一些依赖于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 :(得分:0)

在测试中无法覆盖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。

答案 1 :(得分:0)

samura的答案很好,你还必须知道配置文件是环境意识所以你可以在你的app.yml中这样做:

all:
  my_setting: "super"

test:
  my_setting: "awesome"

这也适用于database.yml文件,允许您在另一个数据库中运行功能测试