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

Symfony1 如何覆盖symfony 1.4中功能石灰测试中的sfConfig设置,symfony1,symfony-1.4,functional-testing,Symfony1,Symfony 1.4,Functional Testing,我的问题是,我想测试一些依赖于sfConfig中特定设置的功能。 建议设置为app\u foo,默认设置为false “标准”测试方法如下: $browser = new sfTestFunctional(new sfBrowser()); $browser-> get('/path_to/index')-> ... end(); 但是像这样更改设置是不起作用的 sfConfig::set('app_foo', true); $browser = new sfTest

我的问题是,我想测试一些依赖于sfConfig中特定设置的功能。 建议设置为
app\u foo
,默认设置为
false

“标准”测试方法如下:

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

$browser->
  get('/path_to/index')->
  ...
  end();
但是像这样更改设置是不起作用的

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

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

然后动作知道值为true的
sfConfig::get('app_foo')

samura的答案很好,你还必须知道配置文件是环境感知的,所以你可以在你的应用程序中这样做。yml:

all:
  my_setting: "super"

test:
  my_setting: "awesome"

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

是的,我知道,但我想在一个环境中测试不同的设置,然后仅为测试一个不同的设置而复制整个环境将是太多的工作。但是谢谢,这是相关的,这很吸引人。。。但是,我无法理解:“PHP注意:未定义属性:sfBrowser::$rawConfiguration”。有什么提示吗?