2010-10-20 91 views
4

我试图在Symfony中为我的应用程序创建一个单元测试。Symfony单元测试不会加载app_bobals

我/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中访问这些值?如果我试图从其他地方访问这些值,它将按预期工作。

回答

5

由于这是一个单元测试,所以配置没有初始化。如果整个框架默认加载,那么它就不是真正的单元测试。

如果依靠配置选项不是明确设置他们在您的测试:

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

与它作为整个应用程序的不同一点点被自举功能测试,你可以轻松地访问您的配置。

编辑:

如果你看看你的缓存目录,你会看到,所有的配置都应用程序的目录(缓存/前端/测试/配置/ config_app.yml.php)下产生的。如果你把它放在主要的config/app.yml中,那只是所有的应用程序都会继承这些值。仍然需要在应用程序的上下文中运行脚本以使用它们。换句话说:它应该是可能的,但是您必须初始化适当的应用程序配置,而不是项目配置(因此在您的引导程序中使用frontendConfiguration而不是ProjectConfiguration)。

但是,我认为保持单元测试尽可能独立于应用程序是一种很好的做法。

+0

我检查了bootstrap.php文件和(在这里继续内存)它看起来像它正在做*东西*与配置文件夹。有没有办法让它加载这些值? – gregghz 2010-10-21 05:54:13

+0

谢谢,我喜欢你的缓存目录的解决方法,因为你发现他们所有的sfConfig :: add()命令,你可以复制到你的测试。 – Tapper 2012-09-26 09:40:05