我的问题是以下我想测试一些依赖于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());
答案 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文件,允许您在另一个数据库中运行功能测试